晋城网站设计,网站管理助手4.0教程,官网优化公司,wordpress功能小工具错误抛出机制#xff1a; 把可能出现异常的代码写在try{}里#xff0c;使用catch(){}设置一些异常陷阱来捕获异常。例如#xff1a; 没有异常处理时异常的抛出机制#xff1a; 为什么出现异常会在控制台上显示打印红色的异常呢#xff1f;这是因为其实main方法外面还有一个… 错误抛出机制 把可能出现异常的代码写在try{}里使用catch(){}设置一些异常陷阱来捕获异常。例如 没有异常处理时异常的抛出机制 为什么出现异常会在控制台上显示打印红色的异常呢这是因为其实main方法外面还有一个try catchtry包围住main方法catch捕捉异常所以在main方法里没有写try catch来捕获出现的异常这个异常就会往外抛到包围main方法的这个try catch然后就会在控制台上打印出现的异常。 异常抛出机制过程 异常家族 Thrwable是所有异常类的最高父类它的两个子类Error(虚拟机报的异常)和Exception(代码上报出的异常)只要是继承这两个类的都强制要写try catch不然就会直接报语法错误。Exception下还有一个RuntimeException子类(常见异常or不是很重要的异常)继承这个类的则不会要求写try catch因为对开发熟练的工程师一般可以避免出现这种异常不然所有异常都要求写try catch的话这样写一段代码就要写一个try catch会显得烦赘。 通用异常陷阱 异常对象里还有通用的捕获陷阱一般有其他陷阱的情况下通用陷阱要写在最后面写在前面的话全部异常都会进入这个陷阱了开发中最好少写通用陷阱因为发生错误了不知道具体是什么错误。 try catch里代码执行流程 因为在第14行代码出现类型转换错误而且没有相对应的异常捕获陷阱这个异常就会往外抛抛到main方法外的try catch里。因为这个异常没有被处理所以下面的代码一句都不会执行的所以只会打印1 2然后打印异常。 因为在第16行代码出现内存溢出错误然后就进入相对应的异常捕获陷阱里异常被处理了后面的代码就会继续执行所以打印 1 2 3 4 7 8。这种情况要看虚拟机分配的内存如果是分配的少于2G就只会打印1 2 3 7 8如果分配的少于1G就只会打印 1 2 7 8。 try catch可以进行嵌套使用因为在第12行代码出现数组下标越界错误而且没有相对应的异常捕获陷阱这个异常就会往外抛抛到main方法外的try catch里被打印出来。因为这个异常没有被处理所以外层try catch下面的代码一句都不会执行的。 没有出现类型转换错误的原因是因为s的值是null没有内存里面是空的所以在转换的时候不明确s是什么类型所以就会转换成功没有出现错误一旦里面有值即便是””也会报错。 本文转自 ZeroOne01 51CTO博客原文链接http://blog.51cto.com/zero01/1974350如需转载请自行联系原作者