`

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 cxy
 */
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基础 之 异常追踪栈》

 

声明:

1.原创文章,转载请标明并加本文连接。

2.更详尽的API请参见  http://docs.oracle.com/javase/7/docs/api/

3.文章反映个人愚见,如有异议欢迎讨论指正

3
3
分享到:
评论
3 楼 桃花源记 2013-05-02  
snkcxy 写道
桃花源记 写道
口口声声说初学者绕行,其实很适合初学者学习,没人评论是被你吓住了,都绕行了!

晕  我说的是 新手看不懂可以先绕过   那能看的懂的就看呗  我作为初学者 觉得刚开始这些东西不知道的比知道的好,免得乱,一个人一个学习思路
我没有强制 只是建议

也是,初学时异常很头疼!
2 楼 snkcxy 2013-04-28  
桃花源记 写道
口口声声说初学者绕行,其实很适合初学者学习,没人评论是被你吓住了,都绕行了!

晕  我说的是 新手看不懂可以先绕过   那能看的懂的就看呗  我作为初学者 觉得刚开始这些东西不知道的比知道的好,免得乱,一个人一个学习思路
我没有强制 只是建议
1 楼 桃花源记 2013-04-28  
口口声声说初学者绕行,其实很适合初学者学习,没人评论是被你吓住了,都绕行了!

相关推荐

    java 基础异常 java 基础异常java 基础异常java 基础异常

    java 基础异常 java 基础异常java 基础异常java 基础异常java 基础异常 java 基础异常java 基础异常java 基础异常java 基础异常 java 基础异常java 基础异常java 基础异常java 基础异常 java 基础异常java 基础异常...

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

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

    java基础之异常

    相同的代码在运行的时候,根据输入的参数或者操作的不同,有可能发生异常,有可能不会发生异常,应该在写代码的过程中尽可能的保证代码的正确性,不要到处都bug。 如果要解决代码中出想的异常,需要添加非常复杂的...

    零基础学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. ...

Global site tag (gtag.js) - Google Analytics