JAVA核心技术java异常处理课件.ppt

* * * * * * * * * * * * * * * 自定义异常示例 class AgeException extends Exception { //用户自定义年龄异常类 public AgeException() { //构造方法 super(年龄无效。); } } public class Test { public static void main(String[] args) { try { int age = Integer.parseInt(args[0]); if (age 0 || age 100) { throw (new AgeException()); //抛出自定义异常类实例 } System.out.println(您的年龄是: + age + 岁。); } catch (AgeException ae) { //捕捉自定义异常类型 System.out.println(ae.getMessage()); //打印异常信息 } } } throws关键字 如果某个函数中的代码有可能引发异常,可以使用try/catch块进行处理,这种处理方式成为“内部处理”; 如果不方便在函数内部进行处理,也可以将异常往函数外部传递,这就要使用到关键字throws; throws用于将函数内部产生的异常抛给主调函数; 一般语法: 返回值类型 函数名(参数列表) throws 异常类型 { …… } throws关键字示例 public class Student //定义学生类 { private String name; //姓名 private int age; //年龄 …… //其它方法,代码略 /*为姓名赋值的方法*/ public void setName(String name) { mName = name; } /*为年龄赋值的方法,该方法有可能抛出异常*/ public void setAge(int age) throws AgeException { if (age 0 || age 100) { throw (new AgeException()); } age = age; } …… //其它方法,代码略 } 调用带有throws的函数1 当调用带有throws关键字的函数时,则必须放在 try/catch块中进行监控,否则编译器将会报错; public class ThrowsTest { public static void main(String[] args) { Student std = new Student(); try { std.setName(zhangsan); std.setAge(24); //该方法必须放在try/catch块中 std.display(); } catch (AgeException ae) { System.out.println(ae.getMessage()); } } } 调用带有throws的函数2 同样地,如果不便进行监控处理,也可以继续使用throws往外抛出异常,但不太推荐此种做法。 public class ThrowsTest { public static void main(String[] args) throws AgeException { Student std = new Student(); std.setName(zhangsan); std.setAge(180); //对该函数不进行监控,只是将异常继续往外抛 std.display(); } } 总结 异常是运行时产生的错误; 可以使用try/catch/finally块,配合使用来处理异常; 如有多种类型的异常要进行处理,可以使用多重catch块; 要手动发生异常,使用throw关键字; 任何抛到函数外部的异常,都必须使用throws关键字指定其异常类型; 请注意throw和throws的区别; 自定义异常类一般继承于Exceptio

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档