网站建设优化过程中的优化策略,网站设计网站浏览,广西壮族自治区行政执法人员培训,推广公司怎么找一.异常与错误的区别再讲异常之前我们就应该要知道异常和错误的区别Error类和Exception类的父类都是throwable类#xff0c;他们的区别是#xff1a;Error类一般是指与虚拟机相关的问题#xff0c;如系统崩溃#xff0c;虚拟机错误#xff0c;内存空间不足#xff0c;方法…一.异常与错误的区别再讲异常之前我们就应该要知道异常和错误的区别Error类和Exception类的父类都是throwable类他们的区别是Error类一般是指与虚拟机相关的问题如系统崩溃虚拟机错误内存空间不足方法调用栈溢等。对于这类错误的导致的应用程序中断仅靠程序本身无法恢复和和预防遇到这样的错误建议让程序终止。Exception类表示程序可以处理的异常可以捕获且可能恢复。遇到这类异常应该尽可能处理异常使程序恢复运行而不应该随意终止异常。二.异常的体现分类1.checked 异常检查期异常 java.lang.Excetion 在编译期需要人工处理否则编译失败Exception的子类除了运行期异常都是检查期异常2.非Checked异常运行时异常 java.lang.RuntimeException 不需要处理的直接能编译通过所有的RuntimeException以及其子类都是运行异常举例运行期异常结果运行期异常当你敲好代码时不会报错而当你运行时才会报除数不能为0的错误举例检查期异常结果检查期异常当你编译的时候就会报错一定要抛出异常编译才能通过三.异常的处理机制Java语言主要依赖于 try catch finally 和throws throw 五个关键字来描述异常1) 在发生异常的地方直接处理使用try catch finally 直接处理异常a) try-catch-finally结构中try块是必须有的catch和finally块为可选但两者至少必须出现其中之一。b) catch 可以同时出现多个但一个异常最多捕获一个catch而且catch的顺序是从上往下c) finally 无论是否捕获异常都会执行的一行代码演示1try异常public class TestException {public static void main(String[] args) {int c 0;try{int a 3;int b 0;// 这块代码出现了异常c a / b;// 那么异常之后的代码都不会被执行System.out.println(Hello World);}catch (ArithmeticException e){System.out.println(除数不能为零);}finally{//不管有没有发生异常finally语句块都会被执行System.out.println(Welcome);}System.out.println(c);// 当b为0时有异常输出为c的初始值0}}//输出结果除数不能为零 Welcome 0try异常演示2带有return的异常import java.io.FileInputStream;import java.io.FileNotFoundException;public class DemoException {public static void main(String[] args) {int atest3();System.out.println(a);}SuppressWarnings(finally)public static int test3(){try {System.out.println(9 / 0);return 1;} catch (Exception e) {System.out.println(捕获到了异常....);return 2;}finally{System.out.println(无论如何都会执行的代码...);return 3;}}}//输出结果 呵呵哈哈 3带有return异常得出结论作用范围 return 终止整个方法体但在finally出现之前 return是老大 finally 作用范围 return2)将异常抛给调用者让调用者处理//throws在方法体头部通过声明 抛出异常...public void dealFile() throws FileNotFoundException{FileInputStream fis new FileInputStream(C:/name.txt);}//那么那么上面调用这个方法可以选择是继续抛出还是捕获异常案例一通过throws抛出异常调用者直接捕获抛出的异常public class TestException {public static void main(String[] args) {try {Test3(); //这里选择直接捕获异常而不是在抛出异常} catch (NumberFormatException e) {System.err.println(非数据类型不能转换。);} //System.err.println();这种输出方式可以输出错误的消息在控制台呈现红色。}public static void Test3() throws NumberFormatException{String s abc;System.out.println(Double.parseDouble(s));}}throws异常运行结果非数据类型不能转换。注意使用Throws是的限制两小原则使用throws 声明抛出异常一个限制子类继承父类重写父类的方法子类抛出的异常必须比父类少子类抛出的异常必须比父类小两小原则是针对检查期异常的运行期异常不遵循这个规则(RuntimeException 以及子类)案例二通过throw抛出异常public class TestException {public static void main(String[] args) {String s abc;if(s.equals(abc)) {throw new NumberFormatException(不能相等);} else {System.out.println(s);}}}throw异常运行结果如下面试题Throw 和Throws有什么区别Throw语句是用在方法体内表示抛出的异常由方法体内的语句处理Throws 语句是在方法声明之后抛出异常表示在抛出的异常交给调用者处理Throws 要么使用try –catch –finally 处理要么继续抛出四.自定义异常所谓自定义异常通常就是定义一个类去继承Exception类或者它的子类。因为异常必须直接或者间接地继承自Exception类。通常情况下会直接继承自Exception类一般不会继承某个运行时的异常类。自定义异常可以用于处理用户登录错误用户输入错误提示等。自定义异常需要遵循以下步骤继承RuntimeExcetion 或者Exception写一个无参的构造函数写一个String类型的构造函数举例自定义异常public class MyException extends Exception{public MyException(){super();}public MyException(String message){super(message);}}一种处理异常方式public class ExceptionTest4{public void method(String str) throws MyException{if(null str){throw new MyException(传入的字符串参数不能为null);}else{System.out.println(str);}}public static void main(String[] args) throws MyException //异常处理方式1不断向外抛出{ExceptionTest4 test new ExceptionTest4();test.method(null);}}另一种异常处理方式public class ExceptionTest4{public void method(String str) throws MyException{if (null str){throw new MyException(传入的字符串参数不能为null);}else{System.out.println(str);}}public static void main(String[] args){//异常处理方式2采用try...catch语句try{ExceptionTest4 test new ExceptionTest4();test.method(null);}catch (MyException e){e.printStackTrace();}finally{System.out.println(程序处理完毕);}}}最后说一句try-catch-finally虽好用但是如果是滥用这样只是会让程序的可读性变的很糟糕当程序报错就无法快速准确的定位了。以上就是本文的全部内容希望本文的内容对大家的学习或者工作能带来一定的帮助同时也希望多多支持脚本之家