Java异常类

异常类是个什么东西!?为什么要有异常这个东东??不够用了能不能自己造一个?

举个例子:

假设今天早晨你早早的出门,骑着单车去买新鲜的蔬菜、肉类总之就是你打算今天做一顿丰盛的午餐,你呢,要去的菜市场要过马路,在你过马路的时候,突然发现前面有个老奶奶还撑着拐杖,慢悠悠的走,你骑得很快,意识到快撞上老奶奶了,这就是异常。为什么要有异常??这问题谁提的,不扯蛋吗!!过...这时候你脑袋飞快处理,抛出异常,紧接着你的大脑就捕获异常,你的脑袋那一瞬间想到的--快撞人了,还是个老奶奶,不得了,这还是头一次,你的经验满足不了你了,因为你没有遇到过这样的事情,这就是所谓的创建自己异常类。也就是说当满足不了自己的需求的时候可以自己创建异常类

你刹车了,呼,有惊无险,紧接着你到了菜市场,你去卖蔬菜,发现有片菜叶有虫子,还是烂的,这可不得了,你的大脑表示这种异常是可抛出的Throwable,心想这老板还做不做生意了,但是这不关你的事,因为你只是来买菜的,这就是所谓的Error类,这是一种异常对象,派生于你大脑的抛出,对象是那片菜叶,但这种异常不需要你操心,这是店家的问题,你换一家店买到你想吃的菜就行啦。我们要关心的刚刚那场有惊无险的“老奶奶事件”,我们称之为Exception类,他也是派生于Throwable类的。

 

异常Exception的概念:

Java异常时Java提供的用于处理程序中错误的一种机制。

JAVA是采用面向对象的方式来处理异常的。处理过程:

抛出异常:在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把一场对象提交给JRE。

捕获异常:JRE得到该异常后,寻找相应的代码来处理该异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的处理代码为止。

 

异常分类:

JDK中定义了很多异常类,这些类对应了各种各样可能出现的异常事件,所有一场对象都是派生于Throwable类的一个实例。如果内置的异常类不能够满足需要,还可以创建自己的异常类。Thorwable表示可抛出的

 

Error类不需要我们管,(发动机坏了)不需要我们管,处理不了,驾驶员不需要操心,唯一的办法就是重启,Error不需要我们操心

我们需要关心的就是Exception

 

import java.util.Scanner;
/**
 * 测试异常(Exception)
 * @author Administrator
 *
 */
public class TestException {
	public static void main(String[] args) {
		//int i =1/0;//UnCheckedException
		//Computer c = null;
		//if(c!=null)
		//c.start();//对象是null,调用了对象方法或属性
		
		String str = "1234shfdkah";
		Integer i = new Integer(1234);
		System.out.println(i);
		
		//手动捕获
		try {
			//CheckedException(被编译器检查过了)
				Thread.sleep(3000);
			}catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally {
			System.out.println("aaa");
		}
	}
}

class Computer{
	void start() {
		System.out.println("计算机启动");
	}
}

没什么技术含量 但是第一次见面还是要自己打的try - catch

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import javax.print.DocFlavor.READER;

public class TestException2 {
	public static void main(String[] args) {
		FileReader reader = null;
		try {
			reader = new FileReader("D:/a.txt");
			char  c = (char)reader.read();
			char c2= (char)reader.read();
			System.out.println(""+c+c2);
		}catch(FileNotFoundException e) {
			e.printStackTrace();
		} catch(IOException e) {
			e.printStackTrace();
		}finally {
			//资源开了一定要关,要不服务器用久了会崩溃的
			try {
				if(reader != null) {
					reader.close();					
				}
			}catch(IOException e){
				e.printStackTrace();
			}
		}
	}
}

使用异常机制的建议:

1、要避免使用异常处理代替错误处理,这样会降低程序的清晰性,并且效率低下

2、处理异常不可以代替简单测试---只在异常情况下使用异常机制

3、不要进行小粒度的异常处理---应该讲整个任务包装在一个Try语句块中

4、异常往往在高层处理(暂时先了解)[是否开枪]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值