初学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的时候看着打印出来的一行行异常信息第一反应就是头大了,其实并不是那样,根据自己写的程序的调用脉络一步一步往回找,会发现所有的红色字体都指向了一行代码!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值