Java异常处理方式

涎涎原创约 1756 字大约 6 分钟...JavaJava

210-Java异常处理方式.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

  1. TryCatch
package com.tencent.chapter08;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
	异常处理方式:
		抛出异常   -> 捕获异常  -> 处理异常   -> 释放、关闭资源
		
		自行处理(积极处理):
		    try
		    {
		    	可能发生异常的语句;
		    }
		    catch(异常类型  异常引用名)
		    {
		    	处理异常的语句;
		    }
		    finally
		    {
		    	最终都要执行的语句,常用于释放资源、关闭资源
		    }
		    
		                注意:
		    	1.try语句块与catch语句块不可分割,是一个完整的语法结构
		    	2.可以同时定义多个catch语句块捕获不同的异常类型
		    	3.当多个catch语句同时定义时,必须根据捕获的异常类型从小到大排序
		    	4.finally语句:无论代码执行return或break语句,还是发生了具体的异常Exception,始终都会执行
		    	                                         除非执行System.exit(0);退出了系统,finally才不会执行
		    	
		
		回避处理(消极处理):
 */
public class _02异常处理方式TryCatch {

	public static void catchException()
	{
		try 
		{
			//模拟停电了..........
			//System.out.println("准备停电....");
			//System.exit(0);//退出系统
			
			//1.文件找不到
			FileInputStream input = new FileInputStream(new File("说明.txt"));
			
			//2.空指针异常
			String str = null;
			System.out.println(str.length());
			
			//3.数组下标越界
			int[] array = new int[]{1,2,3};
			for (int i = 0; i <= array.length; i++) {
				System.out.println(array[i]);
			}
			
			//4.算数异常
			int i = 1/0;
			
			System.out.println("代码终于完整的运行了........");
			return;
		} 
		//JDK1.7新特性,允许在一个catch中同时定义多个异常类型
		/*catch(FileNotFoundException | NullPointerException | ArrayIndexOutOfBoundsException | ArithmeticException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			System.out.println("发生了运行时异常,代码有bug了,请查验!!" + e.getMessage());
		}*/
		//负责捕获"文件找不到"异常
		catch (FileNotFoundException e) 
		{
			//e.printStackTrace();//打印异常堆栈信息
			System.out.println("亲爱的,你的<说明.txt>找不到了哦,请查验文件是否异常!");//一般记录日志,或者发送邮件、短信
		}
		//负责捕获"空指针"异常
		catch(NullPointerException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			System.out.println("调用length()方法的对象str为null,不能使用");
		}
		//负责捕获"数组下标越界"异常
		catch(ArrayIndexOutOfBoundsException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			System.out.println("当前数组array长度为3,下标为0-2之间,请确认下标是否合法");
		}
		//负责捕获"算数异常"
		catch(ArithmeticException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			System.out.println("除数不能为0");
		}
		//负责捕获所有的"运行时异常"
		catch(RuntimeException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			System.out.println("发生了运行时异常,代码有bug了,请查验!!");
		}
		//负责捕获所有的"异常(运行时异常,非运行时异常)"
		catch(Exception e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			System.out.println("发生了异常(运行时异常,非运行时异常),代码有bug了,请查验!!");
		}
		finally
		{
			System.out.println("始终都要执行的代码>>>>>>>>>>>>>>>>>>>>>>>>");
		}
		System.out.println("-----------------------------------------");
	}
	
	public static void main(String[] args) {
		catchException();
	}
	
}
  1. Throws
package com.tencent.chapter08;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

/**
	异常处理方式:
		抛出异常   -> 捕获异常  -> 处理异常   -> 释放、关闭资源
		
		自行处理(积极处理):
		    try
		    {
		    	可能发生异常的语句;
		    }
		    catch(异常类型  异常引用名)
		    {
		    	处理异常的语句;
		    }
		    finally
		    {
		    	最终都要执行的语句,常用于释放资源、关闭资源
		    }
		    
		                注意:
		    	1.try语句块与catch语句块不可分割,是一个完整的语法结构
		    	2.可以同时定义多个catch语句块捕获不同的异常类型
		    	3.当多个catch语句同时定义时,必须根据捕获的异常类型从小到大排序
		    	4.finally语句:无论代码执行return或break语句,还是发生了具体的异常Exception,始终都会执行
		    	                                         除非执行System.exit(0);退出了系统,finally才不会执行
		    	
		
		回避处理(消极处理):
			throws:修饰方法,告诉调用方法的人,该方法可能存在某类异常
			throw: 抛出具体的异常
 */
public class _03异常处理方式Throws {

	public static void catchException() throws FileNotFoundException,NullPointerException,ArrayIndexOutOfBoundsException,ArithmeticException
	{
		try 
		{
			//模拟停电了..........
			//System.out.println("准备停电....");
			//System.exit(0);//退出系统
			
			//1.文件找不到
			FileInputStream input = new FileInputStream(new File("说明.txt"));
			
			//2.空指针异常
			String str = null;
			System.out.println(str.length());
			
			//3.数组下标越界
			int[] array = new int[]{1,2,3};
			for (int i = 0; i <= array.length; i++) {
				System.out.println(array[i]);
			}
			
			//4.算数异常
			int i = 1/0;
			
			System.out.println("代码终于完整的运行了........");
			//return;
		} 
		//JDK1.7新特性,允许在一个catch中同时定义多个异常类型
		/*catch(FileNotFoundException | NullPointerException | ArrayIndexOutOfBoundsException | ArithmeticException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			System.out.println("发生了运行时异常,代码有bug了,请查验!!" + e.getMessage());
		}*/
		//负责捕获"文件找不到"异常
		catch (FileNotFoundException e) 
		{
			//e.printStackTrace();//打印异常堆栈信息
			//System.out.println("亲爱的,你的<说明.txt>找不到了哦,请查验文件是否异常!");//一般记录日志,或者发送邮件、短信
			throw e;
		}
		//负责捕获"空指针"异常
		catch(NullPointerException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			//System.out.println("调用length()方法的对象str为null,不能使用");
			throw e;
		}
		//负责捕获"数组下标越界"异常
		catch(ArrayIndexOutOfBoundsException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			//System.out.println("当前数组array长度为3,下标为0-2之间,请确认下标是否合法");
			throw e;
		}
		//负责捕获"算数异常"
		catch(ArithmeticException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			//System.out.println("除数不能为0");
			throw e;
		}
		//负责捕获所有的"运行时异常"
		catch(RuntimeException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			//System.out.println("发生了运行时异常,代码有bug了,请查验!!");
			throw e;
		}
		//负责捕获所有的"异常(运行时异常,非运行时异常)"
		catch(Exception e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			//System.out.println("发生了异常(运行时异常,非运行时异常),代码有bug了,请查验!!");
			throw e;
		}
		finally
		{
			System.out.println("始终都要执行的代码>>>>>>>>>>>>>>>>>>>>>>>>");
		}
		System.out.println("-----------------------------------------");
	}
	
	public static void main(String[] args){
		try {
			catchException();
		} 
		//负责捕获"文件找不到"异常
		catch (FileNotFoundException e) 
		{
			//e.printStackTrace();//打印异常堆栈信息
			System.out.println("亲爱的,你的<说明.txt>找不到了哦,请查验文件是否异常!");//一般记录日志,或者发送邮件、短信
		}
		//负责捕获"空指针"异常
		catch(NullPointerException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			System.out.println("调用length()方法的对象str为null,不能使用");
		}
		//负责捕获"数组下标越界"异常
		catch(ArrayIndexOutOfBoundsException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			System.out.println("当前数组array长度为3,下标为0-2之间,请确认下标是否合法");
		}
		//负责捕获"算数异常"
		catch(ArithmeticException e)
		{
			//e.printStackTrace();//打印异常堆栈信息
			System.out.println("除数不能为0");
		}
	}
	
}

分割线


相关信息

以上就是我关于 Java异常处理方式 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。

上次编辑于:
贡献者: 涎涎
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.4