`
chaoyi
  • 浏览: 309942 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

5.异常

 
阅读更多
package cn.jbit.exception;

import java.util.InputMismatchException;
import java.util.Scanner;

/**
 * 测试类
 * 
 * @author kyaccp
 * 
 */
public class Test {
	/**
	 * 程序入口
	 * 
	 * @param args
	 *            输入参数
	 */
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		try { // 捕获 异常
			System.out.print("请输入课程代号(1~3之间的数字):");
			int num = input.nextInt(); // 课程编号
			switch (num) {
			case 1:
				System.out.println("C#编程");
				break;
			case 2:
				System.out.println("Java编程");
				break;
			case 3:
				System.out.println("SQL基础");
				break;
			default:
				System.out.println("请输入(1~3之间的数字!)");
			}
			// 异常处理
		} catch (InputMismatchException e) {
			System.err.println("输入的数字必须是整数。");
			e.printStackTrace();
		} catch (Exception e) {
			System.err.println("程序正在缓冲,请稍等!");
		} finally {
			System.out.println("谢谢查询!");
		}
	}

}

 

效果图:



 

 

package cn.jbit.exception;

import java.util.InputMismatchException;
import java.util.Scanner;

import org.apache.log4j.Logger;

/**
 * 测试类
 * 
 * @author chaoyi
 * @2013-10-25
 */
public class ArithmeticTest {
	/**
	 * 实例化控件类
	 */
	static Logger logger = Logger.getLogger(ArithmeticTest.class.getName());

	/**
	 * 程序入口
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		try { // 捕获异常
			System.out.print("请输入被除数:");
			int num1 = input.nextInt();
			logger.debug("请输入被除数:" + num1);
			System.out.print("请输入除数:");
			int num2 = input.nextInt();
			logger.debug("请输入除数:" + num2);
			System.out.println(String.format("%d/%d=%d", num1, num2, num1
					/ num2));
			logger.debug(String.format("输出运算结果是:%d/%d=%d", num1, num2, num1
					/ num2));

			// return; //finnally语句仍旧会执行

			// 处理异常
		} catch (InputMismatchException e) {
			logger.error("出现错误:被除数和除数必须是整数。", e);

		} catch (ArithmeticException e) {
			logger.error("出现错误:除数不能为零。", e);

		} catch (Exception e) {
			logger.error(e.getMessage());
			// return; //finnally语句仍旧会执行

		} finally {
			System.out.println("感谢使用本程序!");
		}
	}
}

 

效果图:

 

 

Java的异常处理是通过五个关键字来实现的:try、catch、finally、throw和throws,下面将依次学习。
 
try-catch块
try-catch-finally块
多重catch块
声明异常——throws
抛出异常——throw
 
常用的异常类型
异常
说明
Exception
异常层次结构的根类
ArithmeticException
算术错误情形,如以零作除数
ArrayIndexOutOfBoundsException
数组下标越界
NullPointerException
尝试访问null对象成员
ClassNotFoundException
不能加载所需的类
InputMismatchException
欲得到的数据类型与实际输入的类型不匹配
IllegalArgumentException
方法接收到非法参数 
ClassCastException
对象强制类型转换出错
NumberFormatException
数字格式转换异常,如把“abc”转换成数字
throw和throws的区别表现在以下三个方面。
作用不同:throw用于程序员自行产生并抛出异常,throws用于声明在该方法内抛出了异常。
使用的位置不同:throw位于方法体内部,可以作为单独语句使用。throws必须跟在方法参数列表的后面,不能单独使用。
内容不同:throw抛出一个异常对象,而且只能是一个。throws后面跟异常类,而且可以跟多个异常类。
 
Throwable类:所有异常类型都是Trowable类的子类,它派生两个子类:Error和Exception。
Error类:表示仅靠程序本身无法恢复的严重错误,比如说内存溢出动态链接失败,虚拟机错误。应用程序不应该抛出这种 类型的对象(一般是由虚拟机抛出)。假如出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。所以在进行 程序设计,应该更关注Exception类。
Exception类:由Java应用程序抛出和处理的非严重错误,比如所需文件找不到、网络连接不通或中断、算术运算错误(如 被零除)、数组下标越界、装载了一个不存在的类、对null对象操作、类型转换异常等。它的各种不同的子类分别对应不同类型 的异常。
运行时异常:包括RuntimeException及其所有子类。不要求程序必须对它们做出处理。
Checked异常(非运行时异常):除了运行时异常外的其他由Exception继承来的异常类。程序类必须捕获或者声明抛出这 种异常,否则会出现编译错误,无法通过编译。处理方式包括两种:通过try-catch在当前位置捕获并处理异常,通过throws声 明抛出异常交给上一级调用方法处理。
 
异常是由Java应用程序抛出和处理的非严重错误,它可以分为Checked异常和运行时异常两大类。
 
Checked异常必须捕获或者声明抛出,否则无法通过编译。运行时异常不要求必须捕获或者声明抛出。
 
Java的异常处理是通过五个关键词来实现的:try、catch、finally、throw和throws。
 
即使在try块、catch块存在return语句,finally块中语句也会执行。finally块中语句不执行的唯一情况是:在异常处理 代码中执行System.exit(1)。
 
可以在一个try语句块后面跟多个catch语句块,分别处理不同的异常。但排列顺序必须是从特殊到一般,最后一个一般都 是Exception类。
 
log4j是一个优秀的日志记录工具。常用使用方式是配置log4j.properties文件,从而控制日志的输出级别,控制日志的目 的地和控制日志输出格式。

个人E-mail:chaoyi77@163.com
 

 

  • 大小: 15.2 KB
  • 大小: 18.2 KB
分享到:
评论

相关推荐

    pring异常处理共5页.pdf.zip

    【标题】:“Spring异常处理共5页.pdf” 这个标题表明我们即将探讨的是关于Spring框架中的异常处理机制。Spring作为Java企业级应用开发的主流框架,其异常处理是开发者必须掌握的关键技能之一。在Spring中,异常...

    异常处理.pdf

    5. 异常的处理:在实际编程中,遇到异常时需要根据具体情况决定如何处理。如果异常可以通过修改代码或增加逻辑来避免的,则应该采取相应措施预防;如果无法避免,可以通过throw语句抛出异常,或者在方法签名中使用...

    异常管理异常分析.pptx

    5. 异常预防:通过对异常原因的深入理解,制定预防措施,以降低未来异常发生的概率。这可能包括优化系统设计、增强监控能力、改善运维流程等。 异常分析是异常管理的核心,它需要结合业务需求、系统架构和故障模式...

    JAVA实验九异常处理.pdf

    5. 异常抛出: 当方法内部无法处理某个异常时,可以通过throw关键字抛出异常。在Java中,异常可以通过throws关键字在方法签名中声明,告知调用者该方法可能会抛出哪些类型的异常。 6. 异常处理的控制流: 异常处理...

    java异常处理.ppt

    Java 的异常处理是通过 5 个关键字来实现的:try、catch、finally、throw、throws。捕获异常、执行可能产生异常的代码、捕获异常、手动抛出异常、声明异常。 8. 异常处理块的一般形式 try{ // 要监控错误的代码...

    SMT异常处理规范方案.doc

    5. 异常发生后,生产组长可以根据异常停产时间,逐级提报异常处理进度,直到董事长。 在处理异常问题时,需要遵守以下职责分工: * SMT 生产:按照文件规 X 对异常板进行处理,提供信息收集表异常产品生产相关信息...

    本科毕业设计-基于YOLOv5的异常行为检测

    基于 YOLOv5 的异常行为检测系统可以用于监控视频流或图像序列,检测其中的异常行为或事件。YOLOv5 是一种目标检测算法,可以快速准确地检测图像中的多个对象。结合异常行为检测算法,可以实现对异常行为的检测和...

    论文研究-基于Java异常处理机制的研究 .pdf

    5. 异常处理结构 Java异常处理结构包括try、catch和finally三个基本代码块。 - try块用于包裹可能会抛出异常的代码段。 - catch块用于捕获try块中抛出的异常,可以有多个catch块来捕获不同类型的异常。 - finally块...

    C++异常处理总结

    5. 异常处理机制不仅仅适合于处理“灾难性的”事件,普通的错误处理也可以用异常机制来处理。但是,如果将其滥用的话,可能造成程序结构混乱。 6. 异常处理机制可以使程序更脆弱,然而这也是使程序更坚强的第一步。...

    易语言异常处理辅助模块

    5. 异常传播:在多层调用的环境中,模块可能会实现异常向上层函数或主程序传播的功能,这样整个程序都可以有机会处理这个异常,而不只是局部的函数。 6. 异常恢复:为了保证程序的正常运行,模块可能还包括了异常...

    8. 异常处理1.rar

    5. 使用 throws 关键字声明方法可能抛出的异常。 6. 避免空指针异常(NullPointerException)和其他常见错误。 7. 异常处理的最佳实践,以优化J2ME应用程序的性能。 通过学习这个教程,开发者不仅可以掌握J2ME的...

    java异常管理

    5. 异常的层次结构: Java的异常都继承自java.lang.Throwable类,其中又分为Error和Exception两个主要子类。Error通常表示系统级别的错误,如虚拟机错误,而Exception是程序中可预见的错误,是我们通常需要捕获和...

    JAVA基础第6章异常处理机制_练习题_200910[借鉴].pdf

    5. 异常处理机制的实现 异常处理机制的实现需要使用try-catch-finally语句,并在catch块中捕获异常,并进行相应的处理。finally块中可以包含资源释放、日志记录等操作。 6. 编程题解析 编程题要求编写一个异常类...

    本科毕业设计-基于YOLOv5的异常行为检测.zip

    【标题】:“本科毕业设计-基于YOLOv5的异常行为检测” 这个毕业设计项目主要聚焦于使用YOLOv5模型进行异常行为检测,这是一种在计算机视觉领域广泛应用的技术,尤其在安全监控、智能视频分析等领域有着重要价值。...

    5.系统异常.xml

    5.系统异常

    Java编程中异常处理的方法和技巧研究.pdf

    Java编程中异常处理的方法和技巧研究 Java编程中异常处理是一...5. 异常处理技巧和方法 通过本文的研究和讨论,我们希望能够帮助Java开发人员更好地理解和掌握Java中的异常处理机制和技术,提高程序的质量和可靠性。

    day06 【异常、线程】-笔记.pdf

    #### 5. 异常处理的关键字 Java中的异常处理涉及到五个关键字:`try`、`catch`、`finally`、`throw`、`throws`。 - **throw**:用于方法内部抛出一个指定的异常对象,结束当前方法的执行。 - **throws**:在方法...

    Java软件开发实战 Java基础与案例开发详解 10-4 使用throw和throws引发异常 共5页.pdf

    #### 5. 异常处理的最佳实践 - **避免使用空检查**:尽可能避免使用空值检查,因为这可能会导致`NullPointerException`。 - **使用适当的异常类型**:确保抛出的异常类型与实际发生的错误相匹配。 - **记录异常**:...

    2019年度中国异常流量报告-秒针系统-202003.pdf

    5. 异常流量的分类与识别: 异常流量可以根据其复杂度被分为一般无效流量(SIVT)和复杂无效流量(Sophisticated Invalid Traffic,SIVT)。SIVT是指可以通过常规方法,如名单过滤或标准化参数等方式识别的无效流量...

Global site tag (gtag.js) - Google Analytics