初学java--异常
?????? 当我们编写完一段代码后运行的时候几乎所有人都遇到过这种情况:逻
辑上没有错,语法上也没有错,但运行的时候就会出现几行甚至几十行红色的文
字告诉你出现了异常,这里的异常就是我们预料之外的事情。
?java中关于异常的关键字有五个:
throw
throws
?try
catch
finally
????? ?从字面意思上来看呢throws和throw都是抛出的意思,也就是说调用某
个方法的时候如果出现了异常并且是用throw或throws处理的话,该方法就把异
常抛给调用它的方法,如果没有该方法没有被其他方法调用,就跑给JVM处理。
不同的地方在于throws是把已经存在的异常抛给调用者去处理,而throw是新建
一个异常对象平抛给调用者。
?????? 其中try catch要连在一起用,finally必须接在try catch 后面用。
try{}catch{}finally{}连在一起用的时候try用来捕获{}中的异常,catch是处
理try捕获的异常,finally表示不管有没有执行try{}catch{}语句,都要执行,
finally后面的代码。
关于try{}catch{}finally{}的具体用法请看如下代码:
package cn.tan.lesson2;import java.io.File;import java.io.IOException;/** * 异常的测试类 * * @author */public class ExceptionTest {/** * 主函数 * @throws IOException */public static void main(String[] args) {ExceptionTest et = new ExceptionTest();// 在sample目录下没有一个test目录et.createFile("test//abc.txt");}/** * 创建一个文件 * @throws IOException * * @throws Exception */public void createFile(String fileName) {// 实例化一个File对象File file = new File(fileName);try {// 开始创建文件file.createNewFile();System.out.println("文件创建成功!");} catch (IOException e) {// 打印异常的信息System.out.println("toString:" + e.toString());System.out.println("getMessage:" + e.getMessage());e.printStackTrace();} finally {System.out.println("执行了finally中的代码");}}}?
?????? 既然程序出现了异常,我们如何让才能知道程序究竟什么地方出现异常呢?关于
打印异常的方法,java中提供了三种:
??e.toString();//异常类以及错误的信息
??e.getMessage();//错误的信息
??e.printStackTrace();//异常类、错误的信息和所产生错误的行,上段代码的输出结果就是:
toString:java.io.IOException: 系统找不到指定的路径。getMessage:系统找不到指定的路径。执行了finally中的代码java.io.IOException: 系统找不到指定的路径。at java.io.WinNTFileSystem.createFileExclusively(Native Method)at java.io.File.createNewFile(File.java:883)at cn.tan.lesson2.ExceptionTest.createFile(ExceptionTest.java:34)at cn.tan.lesson2.ExceptionTest.main(ExceptionTest.java:20)
?
关于throws和throw的用法,就是在定义方法的时候要抛出异常,比如还是上面的两个方法,用throws就应该向下面这样定义:
public static void main(String[] args) throws IOException {ExceptionTest et = new ExceptionTest();// 在sample目录下没有一个test目录et.createFile("test//abc.txt");}public void createFile(String fileName) throws IOException {// 实例化一个File对象File file = new File(fileName);// 开始创建文件file.createNewFile();System.out.println("文件创建成功!");}??最开始接触java的时候看着打印出来的一行行异常信息第一反应就是头大了,其实并不是那样,根据自己写的程序的调用脉络一步一步往回找,会发现所有的红色字体都指向了一行代码!