`

java基础之异常

    博客分类:
  • java
 
阅读更多

讲述:

    1.五个关键字

       1.try:尝试捕获异常,具体的下面讲述

       2.catch:当try捕获到异常了,系统会自动生成一个异常信息,这个异常信息就给catch,形象的说我抓住了这个异常。

       3.throw:主动的抛出一个异常

          情况一:我发现了一个我处理不了的 并且会导致我程序不正常运行的错误,于是我将这个异常抛出去了。(抛给谁了?这个视情况而定)

          情况二:我发现了一个不太对的地方会影响我今后的程序运行,为了避免更大的错误产生,我先主动的提出(抛出)这个“问题”

        4.throws:方法声明 会抛出这样的异常,用于自定义异常。(初学者 可以暂时绕过)

        5.finally:

           无论是否发生异常,程序必须执行的代码块。例如:经典的关闭数据库连接例子。多用于执行清理工作。

           finally看似很“权威”(必须执行),但是System.exit(1);会让它丧失这个权威性。

    2.try+catch

       1.联合出击保证程序正常运行。

       2.理解:

          我们希望写出这样的程序:if(程序正常){我的操作} else{处理不正常}

          但是这个程序正常太泛泛了 我们没办法定义它或者枚举它,于是我们用try去监视我们的操作是否正常,

          当他不正常的时候,我们抓住这个不正常的情况 处理它。

          try-catch 就是在做这么一件有意义的事。

    3.注意(新手看不懂可以先绕过):

       1.catch可以有多个,谁能抓住谁抓,抓不住就让别人去抓,但是这个是需要层级的(范围小的先catch)

       2.try块中的变量只能在try中使用。

       3.java7中提供了一次catch多个异常的方式,每个异常使用|分割(注意只有在jdk7下才能使用)

       4.java7下的AutoCloseable接口可以使得程序简化有兴趣可自己百度或者查看java api

    4.Exception的几个方法(见例子)

    5.自定义一个异常:

       1.上文说过不肯能枚举所有的异常情况,即便枚举了,但是你也不能冲破认知差异性。(在大象的世界里人类就是异类)

       2.定义一个拥有自己业务逻辑的异常类

       3.实现方式:继承Exception 或者他的子类

 

package com.cxy.exception;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;

/**
 * @author peter
 */
public class ExceptionTest
{
	public static void main(String[] args)
	{
		try
		{
			List l=null;
			l.get(0);
		}catch(NullPointerException|ArrayIndexOutOfBoundsException e)  //注意:这里只能java7用,如果你不是java7请去掉一个异常
		{
			System.out.println("我抓住了一个异常");
			System.out.println("异常信息:"+e.getMessage());
			e.printStackTrace(); //打印异常的跟踪栈信息
		}
		System.out.println("=======================");
		
		/* throw
		 * 用途:
		 *   1.抛出一个我处理不了的异常		
		 *   2.提前发现问题避免更大的问题发生(实践中得来)
		 *     一个人要盖别墅,后经发现他选址在太平洋中间,于是我抛出了这个问题,避免后面砂石料,工程设计都做好了 发现根本没法建。
		 * 效果:导致程序或者方法终止(如果不catch这个异常的话)
		 * */
		try
		{
			throw new Exception("没事抛着玩"); //主动抛出一个异常
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		System.out.println("=======================");
		
		//throws的用法
		try
		{
			test();
		} catch (NullPointerException e)
		{
			System.out.println("catch住了test方法抛出的异常");
		}
		System.out.println("=======================");
		
		//finally用法
		FileInputStream fis=null;  //这是一个输入流 相关的知识请见后续文章
		try
		{
			/* 这里会出现找不到cxy.txt这个文件错误
			 * 这里有个问题 无论异常产生与否 我们都需要将fis关闭
			 * java7之前 我们都是使用finally来处理这类的问题,无论是否发生异常都要执行的操作
			 * java7开始,AutoCloseable接口可以不必使用finally来处理这个问题(如果有时间我会写一篇相关的文章)
			 */
			fis = new FileInputStream("cxy.txt");
		} catch (FileNotFoundException e1)
		{
			e1.printStackTrace(); 
		}finally
		{
			try
			{
				fis.close();
			} catch (Exception e)
			{
				//呵呵 包括这里都套着一个try,因为 程序怕遇到fis是null 或者 io异常
				e.printStackTrace();
			}
		}
		System.out.println("=======================");
		
		//自定义异常类
		try
		{
			throw new MyException("中文异常信息");
		} catch (MyException e)
		{
			e.printChineseMsg();
		}
		
		System.out.println("虽然有很多异常,但是我正常完结了~");
	}
	
	/** 提前声明 我这个方法可能会抛出什么样的异常,请调用者自己处理
	 */
	public static void test() throws NullPointerException
	{
		throw new NullPointerException(); //抛出一个null异常
	}
}

//自己定义的异常
class MyException extends Exception
{
	public MyException(){}
	public MyException(String msg)
	{
		super(msg);
		//当然 这里你可以加一些日志的操作
	}
	
	/**
	 * 我们期望的能看懂的中文异常信息
	 */
	public void printChineseMsg()
	{
		System.out.println("异常信息:"+this.getMessage());
	}
}

 

分享到:
评论

相关推荐

    Java基础之异常处理操作示例

    Java 异常处理操作示例 ...Java 异常处理操作示例主要介绍了 Java 基础之异常处理操作,涉及 Java 异常捕获、抛出异常、自定义异常处理相关操作技巧,帮助开发者更好地理解和使用 Java 异常处理机制。

    零基础学Java异常处理

    零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理零基础学Java异常处理...

    java基础:异常学习ppt(学习模板)

    java基础异常学习ppt 学完本次课程后,你能够 了解异常概念 理解Java异常处理机制 会捕捉异常 会抛出异常 了解Java异常体系结构

    JAVA零基础到高级进阶特训营 JAVA多线程并发设计+Spring高级+数据库开发+JAVA基础等

    这套课程既可以作为从零基础开始...课程的主要内容涉及有JAVA基础课程、JAVA多线程与并发编程、数据库开发基础和进阶、Spring Framework、Spring进阶、Spring MVC框架、Spring boot、Java常用类库、Java异常处理等等

    JAVA基础-异常处理总结

    JAVA基础-异常处理总结

    Java基础入门教程 第7章 Java中的异常处理(共26页).ppt

    Java中的异常处理是编程中非常重要的一个环节,它主要用于处理程序运行时可能出现的错误和问题。异常处理使得程序更加健壮,能够优雅地处理错误,而不是简单地崩溃。本章内容将围绕Java异常处理机制展开,包括理解...

    JAVA基础测试中常见的异常问题汇总

    下面将深入探讨在Java基础测试中常见的异常问题及其解决方案,尤其关注那些在执行基本Java程序时可能遇到的异常情况。 ### 1. "java' is not recognized as an internal or external command 这种情况通常发生在...

    java基础第七章内部类与异常类.doc

    Java 基础第七章内部类与异常类 Java 语言支持在一个类中定义另一个类,这样的类称做内部类。内部类和外嵌类之间存在着紧密的关系:内部类可以访问外嵌类的成员变量和方法,而外嵌类也可以使用内部类声明的对象作为...

    java异常机制小结

    Java 异常机制的基础知识包括异常的基础概念、异常的分类、异常的对象、异常的来源、异常的处理等几个方面。 一、Java 异常的基础知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以...

    java基础学习课件ppt

    Java基础学习课件PPT是一套全面覆盖Java SE(标准版)基础知识的教育资源,适合初学者和希望巩固Java技能的开发者。这套课件旨在在一个月内帮助学习者掌握Java编程的核心概念,为深入学习和应用Java技术打下坚实的...

    大学课程讲义-Java基础-异常处理.pptx

    Java 异常处理机制详解 Java 异常处理是指在 Java 程序执行过程中出现非预期的情况,例如数组下标越界、空...通过学习 Java 异常处理机制,可以更好地掌握 Java 编程的基础知识,并在实际开发中更好地处理异常情况。

    java实验报告4-异常处理

    Java异常处理是编程中至关重要的一个环节,它...通过实际操作,你将能够更有效地调试代码,定位问题,为后续的Java学习打下坚实的基础。在实际项目中,良好的异常处理和日志记录习惯将极大地提高开发效率和软件质量。

    完整版 Java基础入门教程 Java程序语言设计 06 异常处理 异常和垃圾收集(共27页).ppt

    完整版 Java基础入门教程 Java程序语言设计 06 异常处理 异常和垃圾收集(共27页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 网络编程 JDBC(共21页).ppt 完整版 Java基础入门教程 Java程序语言设计 07 ...

    java语言时间异常类

    首先,我们来看看基础的`Exception`类,它是所有Java异常的根类。任何抛出的异常都直接或间接地继承自`Exception`。在处理时间异常时,最常见的可能是`IllegalArgumentException`,这个异常会在方法接收到非法参数时...

    Java基础课件 全套pdf版 java培训

    尚硅谷_佟刚_Java基础_异常处理.pdf): - 异常的分类:理解检查异常和运行时异常。 - try-catch-finally结构:学习如何捕获和处理异常。 - 自定义异常:了解如何创建和抛出自定义异常。 6. **IO流**(10. ...

    java异常处理机制示例(java抛出异常、捕获、断言)

    当try块中的代码抛出一个异常时,控制权会立即转移到与之匹配的catch块。 2. **catch** 关键字:用于捕获try块中抛出的异常。你可以有多个catch块来捕获不同类型的异常。在本例中,`TryCatchTest.run(10, -1)`可能...

Global site tag (gtag.js) - Google Analytics