我们在编写程序的时候并不是每次都能完美运行,总会出现一些问题,也就是报错,本文主要讲的是运行是出现的错误。
Java中,运行时出现的错误被视为异常,而对应的就有异常处理机制
异常一般分为两种:Error:Java虚拟机无法解决的严重问题,一般不做处理。 Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。
下面是一些常见异常展示:
import java.io.FileInputStream; import java.io.FileNotFoundException; public class test { public static void main(String args[]) throws FileNotFoundException { /* int[] a = new int[1]; a[1]=1; 报错:java.lang.ArrayIndexOutOfBoundsException */ /* int n =Integer.parseInt("abc"); System.out.println(n); 报错:java.lang.NumberFormatException */ /* FileInputStream fis = new FileInputStream("a.txt"); 报错:java.io.FileNotFoundException: a.txt (系统找不到指定的文件。) */ } }
对于这些异常,我们或许会终止程序进行修正,但作为用户,我们更需要在程序出现异常时得到反馈。
try-catch-finally语句就能够满足我们的需求
try块:负责捕获异常,一旦try中发现异常,程序的控制权将被移交给catch块中的异常处理程序。(try语句不能单独出现,需搭配catch或finally)
catch块:处理方法(catch可叠加)
finally:最终执行的代码,用于关闭和释放资源。(注:无论如何finally语句都会执行)
代码示例:
import java.io.FileInputStream; import java.io.FileNotFoundException; public class test { public static void main(String args[]) throws FileNotFoundException { /* try { int[] a = new int[1]; a[1]=1; }catch(ArrayIndexOutOfBoundsException e) { System.out.println("下标越界"); } 输出:下标越界 */ /* try { FileInputStream fis = new FileInputStream("a.txt"); }catch(FileNotFoundException e) { System.out.println("找不到相应文件"); } 输出:找不到相应文件 */ try { int a= 0; System.out.println(a); }catch(Exception e) { System.out.println("catch语句"); }finally { System.out.println("finally语句"); } //0 //finally语句 } }
try-catch-finally语句是捕获异常。
throws关键字则是抛出异常。仅仅是将函数中可能出现的异常向调用者声明,而自己则不具体处理。
public class test { public static void main(String args[]) throws NumberFormatException { try { int n =Integer.parseInt("abc"); System.out.println(n); }catch(NumberFormatException e){ } } } //运行时无输出
throw关键字是手动抛出异常。
public class test { public static void main(String args[]) throws NumberFormatException { try { int n =Integer.parseInt("abc"); System.out.println(n); }catch(NumberFormatException e){ throw new NumberFormatException("出现异常");//throw } } }
总结:
程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常(开发过程中的语法错误和逻辑错误不是异常)。
对于异常,我们有捕获和抛出两种方法、
捕获异常使用try-catch-finally语句,抛出异常使用关键字throws
在抛出异常是我们也可以使用关键字throw手动抛出。需要注意的是,抛出异常是一种比较消极的方法,因为其并不对异常做出改正。
标签:System,try,println,finally,catch,异常 From: https://www.cnblogs.com/kandh/p/17826408.html