java异常处理

来源:互联网 发布:手机淘宝分期付款流程 编辑:程序博客网 时间:2024/06/14 03:52
错误分为三种:语法错误,逻辑错误和运行错误,前两者分别可以通过编译器检查和调试发现,环境发现的不可能执行的操作叫做运行操作。处理运行错误可以用异常处理来进行。没有异常捕获和处理程序,一旦发生运行错误,程序就会非正常终止而产生很可能严重的影响。例如常见的访问越界数组元素会产生的ArrayIndexOutOfBoundsException异常等。使用异常处理,能够提高程序的稳定性,不至于遇见异常的情况程序立即中断。
捕获并处理异常可以使用try-catch block,try块中包含可能抛出异常的语句,catch块中有一个异常参数,后面跟异常处理语句块。当try中抛出一个异常,try剩下的语句就会被跳过,直接转移到catch中执行。例如:
<pre>
do{
  try{
Syetem.out.println("please input an integer: ");
int number = scanner.next.In();
<!--more-->System.out.println("the number is " + number);
}
catch(InputNismatchException ex)
{
System.out.println("try again,incorrect input.");
}
}
</pre>
如上代码,如果输入形式不正确,则直接跳转到catch,输出错误提示信息。


异常分为3类,系统错误(error),运行异常(runtime exception),和异常(exception),其中前两者都是免检的异常,可以由java的虚拟机自己检测出来,剩下的都成为必检异常如常见的IOException,编译器会强制程序员检测并处理他们。异常处理分为三种操作,声明异常,抛出异常,捕获异常。
(1)声明异常即说明它可能会抛出的必检异常,用关键字throws:
[pre]public void Method()throws IOException [/pre]
或者throws 后面加一个异常列表,表示该方法可能抛出多个异常。
(2)抛出异常就是当程序检测到一个错误后,创建一个合适的类型异常的实例并且抛出它。可以直接
[pre]throw new IllegalArgumentException("wrong arguments!")[/pre]
另外一个方法总能够自动抛出免检异常,必检异常必须要在程序部分声明它。
(3)捕获异常,即try-catch块去捕获。


异常处理可以将错误处理的代码从正常的编程任务中分离出来,这样程序可以更加容易阅读和修改。但是因为异常处理也需要很大的开销,所以在处理一般简单性的小错误直接用if语句判断或者其他方式处理掉。如果是那些不可预料的错误时可以使用异常捕获和处理。