黑马程序员 ---- 异常处理

  ------- android培训java培训、期待与您交流! ----------


1. Java 提供了特有的语句进行处理。


try
{
    需要被检测的代码;
}
catch(异常类  变量)      // 如果没问题, catch 不会运行
{
    异常发生时的处理语句;
}
finally                // finally 可以省略
{
    一定会执行的语句;
}




2. 对捕获的异常对象进行常见的方法操作。


     String getMessage(); 获取异常信息。
     String toString();  异常名称:异常信息。
     printStackTrace(); 异常名称,异常信息,异常出现的位置。
     
3. Java 的异常处理机制。
                                            
                                            |-------------------  交给 Java默认异常处理机制处理。输出异常后便终止程序运行。    
                                            |   (不明确处理)  
    程序运行 --------------是否自行处理异常?|
             (发生异常)                    |
                                            |
                                            |-------------------   编写 try - catch - finally 处理异常。可以灵活操控,适当处理。
                                                (明确处理)
                                            
                                            

                                            
例1:产生异常。

class Demo
{
	int div(int a, int b)
	{
		return a/b;
	}
}

class Test
{
	public static void main(String[] args)
	{
		Demo d = new Demo();
		
		int x = d.div(4, 0);
		System.out.println(x);
		System.out.println("over");
	}
}

运行结果:
                Exception in thread "main" java.lang.ArithmeticException: / by zero
                at Demo.div(Test.java:5)
                at Test.main(Test.java:15)
    
    
范例分析: 问题出在了 int x  = d.div(4,0); 上。    


例2: 处理异常。

class Demo
{
	int div(int a, int b)
	{
		return a/b;                 // try在此处运算时检测出异常,并抛出的异常是属于 ArithmeticException 类。
	}
}

class Test
{
	public static void main(String[] args)
	{
		Demo d = new Demo();
		
		try                       //  try 中放入需要检测的语句,放入后 x 只能在 try 中有效,为了能打印出结果,需要将S.o.p 也放入try中
		{
			int x = d.div(4, 0);
			System.out.println(x);
		}
		catch(Exception e)        // Exception e = new ArithmeticException();     多态
		{                        // catch 会与 try 抛出的类的类型进行匹配,然后再在相应的 catch 中处理。
			System.out.println("一定会输出的结果");
		}
		
		
		System.out.println("over");
	}
}

例3:对捕获的异常对象进行常见的方法操作。

class Demo
{
	int div(int a, int b)
	{
		return a/b;
	}
}

class Test
{
	public static void main(String[] args)
	{
		Demo d = new Demo();
		
		try
		{
			int x = d.div(4, 0);
			System.out.println(x);
		}
		catch(Exception e)
		{
			System.out.println("一定会输出的结果");
			System.out.println(e.getMessage());
			System.out.println(e.toString());
			
			e.printStackTrace();            //其实jvm默认的异常处理机制,就是在调用printStackTrace方法。
		}

	}
}

返回结果:
                一定会输出的结果
                / by zero
                java.lang.ArithmeticException: / by zero
                java.lang.ArithmeticException: / by zero
                at Demo.div(Test.java:5)
                at Test.main(Test.java:17)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值