JAVA 异常
1.异常的定义?
阻止当前方法或作用域继续执行的问题。虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常。绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败。
2.异常的分类?
常见的异常一般都分为检查异常和非检查异常RuntimeExcepiton
3.异常的捕捉?
catch捕捉异常
不能光捕捉
catch(RuntimeException e)
{
*/
//抓到异常,什么也不干
/*
* 这样会使程序出现混乱状态,吃掉异常会出现严重的问题
*
*e.printStackTrace();
*程序的稳定性 正确的异常处理是程序稳定的关键
}
//必须对异常进行合理的处理
除了runtime以外的所有异常,都必须进行catch处理 或者抛出 ,抛出后由调用的地方再进行处理
4.异常可以自己定义?
异常可以自定义的,但是一般不这样使用,因为一般遇到问题都解决掉了很少有不能解决的问题需要抛出异常
5.finally和final的区别
finally是异常处理里都会进行的一环(除开出错 程序结束)
final定义一个标记的变量并且不能赋值
基本上来说final和finally不是一个东西
案列
package xyf;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
/*
* 异常分为非检查异常
* 除了runtimeexception
* 都叫做检查异常
*
*
*
*/
import java.lang.*;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class yc
{
public static void main(String[] args) //throws ParseException//表示parse可能会抛出parseexception异常
{
try
{
test();
if(true)
{
throw new IOException("aaa");
//throw new RuntimeException("aa");
}
if(true)
{
throw new SQLException("");
}
}
/*catch(IOException ex)
{
System.out.println("文件没有找到");
}*/
//如果不catch住那么必须在方法上声明抛出
catch(ParseException ex)
{
System.out.println("解析日期出错");
}
catch(IOException ex)
{
System.out.println("文件没有找到");
}
catch(SQLException ex)
{
System.out.println("sql异常");
}
}
static void test() throws ParseException,FileNotFoundException
{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date=sdf.parse("2008-08-08");
FileInputStream fis=new FileInputStream("w:\1.txt");
}
}
异常的本意是好的,让我们试图修复程序,但是现实中我们修复的几率很小,我们很多时候就是用它来记录出错的信息。如果你厌倦了不停的处理异常,重新抛出异常对你来说可能是一个很好的解脱。原封不动的把这个异常抛给上一级,抛给调用这个方法的人,让他来费脑筋吧。这样看来,java异常(当然指的是受检异常)又给我们平添很多麻烦,尽管它的出发点是好的。