详述try--catch--finally

(什么是异常  异常后果  异常的结构  什么是检查时一擦  运行时  异常处理方式 try-cathc-fianlly  有什么弊端——log4j  怎么用——>间歇性生成)

 

##Java语言将程序运行过程中所发生的不正常严重错误称为异常,对异常的处理称为异常处理。

##它会中断正在运行的程序,如果程序出现异常,则同级代码不再运行。

##异常的结构:

Throwable常用方法: public String getMessage():获取异常信息; public void printStackTrace():输出异常堆栈中的异常信息Throwable下有两个子类Exception,Error;当出现Error时,是jdk的错,我们不需要做什么,程序发生这种严重错误时,通常的做法是通知用户并中止程序的执行。Exception又分为运行时异常(RuntimeException)和检查时异常(CheckedException),异常构造方法有: public Exception():无参构造方法; public Exception(String message):可以指定详细异常信息的有参构造方法;

 ##CheckedException:检查时异常,又称为非运行时异常,这样的异常必须在编程时进行处理,否则就会编译不通过。Exception异常类及其子类(除去RuntimeException异常类及其子类)都是检查时异常。

##RuntimeException:运行时异常,即程序运行时抛出的异常。这种异常在写代码时不进行处理,Java源文件也能编译通过。 RuntimeException异常类及其下面的子类均为运行时异常。

##总结:运行时异常--可以不显式对异常的处理,javac依然可以编译程序,检查时异常:必须显式对异常的处理,不然javac不会对程序进行编译。

##异常处理方式:有两种如下:

 try…catch…finally异常处理结构中,try语句块是必须的,  catch和finally语句块至少出现一个。 注意:如果try语句块包含的是检查时异常,则在没有通过throws抛出该异常类的情况下,try必须和catch一起使用,当该行代码去掉或注销掉时,catch相应的异常语句块必须去掉。捕获异常的语法结构如下:

try{
      //可能抛出异常的语句块
}catch(SomeException1 e){ // SomeException1特指某些异常 
     //当捕获到SomeException1类型的异常时执行的语句块
} catch( SomeException2 e){
     //当捕获到SomeException2类型的异常时执行的语句块
}finally{
     //无论是否发生异常都会执行的代码
}
try {
				Class.forName("java.long.object");
			} catch (ClassNotFoundException e) {
				
				e.printStackTrace();
			}catch(ArithmeticException e) {
				System.out.println("shuxue");
			}catch(Exception e) {//一个try可以有多个catch,try不允许单独使用
				System.out.println("未知的异常名");
			}finally{//finally 无论try中是否有异常发生,finlly中的代码总会执行,一般用于释放资源
				System.out.println("jieshu");
			}

## 先子类异常,后父类异常:ArrayIndexOutOfBoundsException异常类(捕获下标越界异常)是RuntimeException的子类,而RuntimeException异常类(捕获运行时异常)是Exception(捕获所有异常)的子类,他们的先后顺序不能颠倒。

 ## try…catch…finally异常处理的弊端:

如下是个死循环,出现异常,会将异常信息打印控制台——>存入一段缓存,缓存有大小——>当缓存满了,但是异常信息源源不断,则会将最先进入缓存的异常信息移除——>意味着无法全面的发现程序运行期间出现的问题——>为了全面收集系统运行期间出现的所有异常信息,log4j诞生了——>将都有异常信息输出到一个文件中——因为文件在硬盘上——>可以认为无限大 。如下:

	public static void main(String[] args)  {
		System.out.println(1122);
		int i=1;
		while(true) {
		try {
				System.out.println("1/0");
			} catch (Exception e) {
				System.out.println("i");
				e.printStackTrace();
			}
		i++;
		}
	}

 

##Log4j:是Apache的一个开源项目,通过使用Log4j,可以控制日志信息格式及其输送目的地(控制台、文件、数据库等),方便后期查找系统运行期间出现的问题,进而便于维护系统。

 
    static Logger logger=Logger.getLogger(Test.class);只要写上这行代码就行,括号中是类名。

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值