标题 异常处理(1)
异常处理已经成为衡量一门语言是否成熟的标准之一,处理传统的C语言没有提供异常机制之外,其它主流的编程语言如:Java,C#,Python,Ruby等都提供了成熟的异常机制。增加了异常处理机制后的程序有更好的容错性,更加健壮。
---------------------------------(我是分割线) --------------------------------------------
异常处理机制
为了防止输入时出现某些异常,我们通常会使用 if 语句
但是一切正常是很抽象的,计算机无法识别,我们就可以将业务实现代码放在try块里,把所有异常处理逻辑放在catch块中处理。
如上图的伪码。
如果try块中的伪码出现异常,系统将自动生成一个异常对象交给Java运行环境,这个过程称为抛出(throw)异常
当运行环境受到异常对象是,回去寻找能够解决的catch块,这个过程称为捕获(catch)异常
提示
不管程序代码块是否处于try块中,只要执行改代码出现了异常,系统总会自动生成一个异常对象。如果程序没有为这段代码定义任何的catch块,程序将自动退出。
注意
try块后面的花括号不可以省略,即使只有一行代码。
catch块后面的花括号同样也不可以省略。
另外,try块里声明的变量是代码块内局部变量,它只在try块内有效,在catch块中不能访问该变量。
Java把所有异常情况分为两种:异常(Exception)和错误(Error),它们都继承自父类Throwable。
Error错误,一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,动态链接失败;通常这种错误不可以捕获或无法修改,这是不应该试图用catch块,也无需在其throws子句后声明该方法可能抛出Error及其任何子类
下面是几种异常处理逻辑的情形
- IndexOutOfBoundsException:数组越界异常
- NumberFormatException:数字格式异常
- AirthmeticException:发生除0异常
- Exception:当异常对象是Exception或exception类的子类时。