异常处理

异常处理与常用类

故事扮演 提交于 2020-01-19 11:50:43
  异常的三个种类:       检查异常:用户错误操作或者是不能被程序员预见的问题,必须由java语言来处理。       运行时异常:运行时异常是一个可以被程序员避免的异常,比如像数组越界、除数为0、引用为null。       错误:错误不是异常,是程序员或用户无法控制的问题,像调用栈溢出。 异常的控制流程:       异常是一个被方法抛出的对象,可以有三种方式来处理:       1.捕获这个异常 2.捕获异常并向下抛出 3.不捕获让它向调用栈弹出。       我们可以使用Throwable类的printStackTrace()方法打印调用栈跟踪信息。 Thowable类:       所有的异常都继承于Throwable类,所以可以在任何捕获的异常调用Throwable类的方法。 异常处理与声明规则:       使用Try...catch处理异常或者使用throws用于声明一个方法中要抛出的异常;也可以使用throw主动抛出一个异常。使用catch时要将子类异常写在前面。子类不能比父类抛出更多的异常。       常用类:           1.系统相关类                 System类 属性in、out、err分别对应标准输入、标准输出、错误流输出                 System类 常用方法:currentTimeMillis()

Windows异常处理

北城以北 提交于 2020-01-18 21:59:10
异常机制,就是为了让计算机能够更好的处理程序运行期间产生的错误,从编程的角度来看,能够将错误的处理与程序的逻辑分隔开。使得我们可以集中精力开发关键功能,而把程序可能出现的异常统一管理。 Windows提供了异常处理的机制,使得你有机会挽救自己即将崩溃的程序,大体上来说它提供了以下处理异常的机制: SEH-结构化异常处理 VEH-向量化异常处理 VCH-向量化异常处理 结构化异常处理 Structed Exception Handler(结构化异常处理)简称SEH,是微软提供的一种处理异常的机制。 在VC++中,通过提供四个微软关键字使得程序员能够良好的使用这一机制,分别是: __try、 __finally、 __except、 __leave 接下来简要说明一下用法。 >>>> 终结处理器 由 __try、 __finally 和 __leave构成。能够保证无论 __try 块中的指令以何种方式退出,都必然会执行 __finally 块。[不会进行异常处理,只进行清理操作] SEH 的使用范围是线程相关的,每个线程都有自己的函数(SEH链表是局部链表,在 堆栈 中) __try { // 被检查的代码块,通常是程序的逻辑部分 printf("__try { ... }\n"); // 使用 __leave 跳出当前的 __try __leave; } __finally { /

异常的捕获和处理

南笙酒味 提交于 2020-01-18 20:39:40
异常的捕获和处理 异常概述 java异常处理 初识异常 异常:程序中运算过程中出现的错误,例如:文件找不到,网络连接中断,算术运算序偶无,数组下标越界等运行程序。 上图为空指针异常 java异常体系结构 java中异型有很多种类型,java体系结构图如下所示 Error类: 表示仅靠程序本身无法恢复的严重错误,如内存溢出,动态链接失败,虚拟机错误…假如出现这样的错误,应尽力使程序安全退出。 Exception类: 由java应用程序抛出和处理的严重错误,如所需文件找不到,网络连接不同或连接中断,算数运算错误,数组下标越界… Exception又分为两大异常类: 1.运行时异常:包括RuntimeException以及所有子类,不要求程序必须对它们进行处理。 2.Checked异常(非运行时异常):除了运行时异常外的其他从Exception类继承来的异常类。 异常 说明 Exception 异常层次结构的根类 ArithmecticException 算数错误异常,如以零作为除数 ArrayIndexOutOfBoundsException 数组下标越界 NullPointerException 尝试访问Null成员 ClassNotFoundException 不能加载所需的类 InputMismatchException 与得到的数据类型与实际的输入类型不匹配

JAVA - 异常处理

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-18 18:38:23
前言: 被混淆的“异常”和“错误”: 当我们自己在写代码的时候很多情况下都会因为各种原因造成一系列的错误,很多人都会把 错误 和 异常 两个概念混淆,在今天之前我也一直认为“错误就是异常,异常就是错误” 这是不对的。 异常通常指: 我们的代码在编译的时候没有出错,但是一运行起来就会出错,比如我们要从一个文件中读取信息,可是这个文件不存在了,程序无法执行下去,故程序就要抓住这些异常,通过异常处理机制来抛出这些异常,程序员就可以通过抛出的异常信息来修改代码 错误: 在我们的编辑器中例如: Eclipse中直接出现了红XX,这个表示我们的代码是有问题的,这种情况下就不属于异常,而是错误。 错误是不可避免出现的,一个健壮的程序必须有能力处理各种各样的错误 目前有两种方法来解决出现的错误: 方法一:通过判断返回错误码: 我之前写过的很多程序,有些地方都是通过判断来抛出可能发生的几种错误 用0表示错误 其他表示成功 例子: int code= processFile("C:\\test.txt"); if(code == 0){ //OK; }else{ //error: switch(code){ case 1: // file not found; case 2: //no read permission; default: //unknown error; } } 这种方法处理起来很麻烦

java中的异常

此生再无相见时 提交于 2020-01-18 11:33:35
--解释 Error 和 Exception 的区别?      Error:指的是JVM错误,这个时候的程序并没有执行,无法处理;      Exception:指的是程序之中出现的错误信息,可以进行异常处理,主要关心Exception。 --请解释 java 之中的异常处理流程     1.如果程序之之中产生了异常,那么会自动的由jvm根据异常的类型,实例化一个指定异常类的对象     2.如果这个时候没有异常处理操作,这个对象交给jvm进行默认处理方式,而后中断程序     3.如果有异常处理,由try语句捕获产生的异常类对象     4.与try之后的每一个catch进行匹配,如果匹配成功,使用 指定catch进行处理,没有任何catch匹配成功交给jvm默认处理     5.不管是否有异常都会执行finally程序,如果没有异常,执行完finally,继续执行下面程序 如果此时有异常没有更够处理(没有catch匹配)那么也会执行finally,但是执行完finally后,将默认交给jvm进行异常的信息输出,并且中断程序。 --Exception的使用     对象多态性来讲,所有的异常类都是Exception的子类,那么这个时候,实际上所有的异常都可以使用Exception进行接收。 那么这个时候就应该可以感受到异常处理所带来的好处了。但是这种操作也存在一种问题

java笔记----异常处理

偶尔善良 提交于 2020-01-18 03:27:56
Error 和 Exeption Error   Error 描述了 JAVA 程序运行时系统的内部错误,通常比较严重,除了通知用户和尽力使应用程序安全地终止之外,无能为力,应用程序不应该尝试去捕获这种异常。通常为一些虚拟机异常,如 StackOverflowError 等。 Exception   Exception 类型下面又分为两个分支,一个分支派生自 RuntimeException,这种异常通常为程序错误导致的异常;另一个分支为非派生自 RuntimeException 的异常,这种异常通常是程序本身没有问题,由于像 I/O 错误等问题导致的异常,每个异常类用逗号隔开。 受查异常和非受查异常 受查异常   受查异常会在编译时被检测。如果一个方法中的代码会抛出受查异常,则该方法必须包含异常处理,即 try-catch 代码块,或在方法签名中用 throws 关键字声明该方法可能会抛出的受查异常,否则编译无法通过。如果一个方法可能抛出多个受查异常类型,就必须在方法的签名处列出所有的异常类。 通过 throws 关键字声明可能抛出的异常: private static void readFile(String filePath) throws IOException { File file = new File(filePath); String result;

java异常处理之throw, throws,try和catch

陌路散爱 提交于 2020-01-18 01:59:32
转自 http://blog.csdn.net/zhouyong80/article/details/1907799 程序运行过程中可能会出现异常情况,比如被0除、对负数计算平方根等,还有可能会出现致命的错误,比如内存不足,磁盘损坏无法读取文件等,对于异常和错误情况的处理,统称为异常处理。 Java 异常处理主要通过5个关键字控制:try、catch、throw、throws和finally。try的意思是试试它所包含的代码段中是否会发生异常;而catch当有异常时抓住它,并进行相应的处理,使程序不受异常的影响而继续执行下去;throw是在程序中明确引发异常;throws的作用是如果一个方法可以引发异常,而它本身并不对该异常处理,那么它必须将这个异常抛给调用它的方法;finally是无论发不发生异常都要被执行的代码 关键字:throw,throws,try和catch的用法如下: 1、throws出现在方法的声明中,表示该方法可能会抛出的异常,允许throws后面跟着多个异常类型 2、throw出现在方法体中,用于抛出异常。当方法在执行过程中遇到异常情况时,将异常信息封装为异常对象,然后throw。 3、try出现在方法体中,它自身是一个代码块,表示尝试执行代码块的语句。如果在执行过程中有某条语句抛出异常,那么代码块后面的语句将不被执行。 4、catch出现在try代码块的后面

[ Java学习基础 ] Java异常处理

故事扮演 提交于 2020-01-18 01:07:53
一、异常概述      异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常。   异常发生的原因有很多,通常包含以下几大类: 用户输入了非法数据。 要打开的文件不存在。 网络通信时连接中断,或者JVM内存溢出。   这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的,为增强程序的健壮性,计算机程序的编写也需要考虑处理这些异常情况,Java语言提供了异常处理功能,本文将介绍Java异常处理机制。   为了更好的理解和学习Java异常处理机制,首先看看下面程序: //HelloWorld.java文件 package com.Kevin; public class HelloWorld { public static void main(String[] args) { int a = 0; System.out.println(5 / a); } } 这个程序没有编译错误,但会发生如下的运行时错误: Exception in thread "main" java.lang

Java异常处理

不问归期 提交于 2020-01-18 00:42:04
六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? 1 OutputStreamWriter out = ... 2 java.sql.Connection conn = ... 3 try { // ⑸ 4  Statement stat = conn.createStatement(); 5  ResultSet rs = stat.executeQuery( 6   "select uid, name from user"); 7  while (rs.next()) 8  { 9   out.println("ID:" + rs.getString("uid") // ⑹ 10    ",姓名:" + rs.getString("name")); 11  } 12  conn.close(); // ⑶ 13  out.close(); 14 } 15 catch(Exception ex) // ⑵ 16 { 17  ex.printStackTrace(); //⑴,⑷ 18 }   作为一个Java程序员,你至少应该能够找出两个问题。但是,如果你不能找出全部六个问题,请继续阅读本文。   本文讨论的不是Java异常处理的一般性原则,因为这些原则已经被大多数人熟知

异常处理,枚举,泛型

倾然丶 夕夏残阳落幕 提交于 2020-01-18 00:00:56
Java异常处理: 5个关键字: try(尝试)、catch(捕获)、 finally(最终的)、throw(抛出)、throws 使用方法: finally :一般写的是资源释放代码,无论是否发生异常代码总能执行。 try{}catch(异常类型){} try{}catch(异常类型){} finally{} public class TestThrows { //除法 public double div() throws ArithmeticException{ int a=1; int b=0; if(b==0){ throw new ArithmeticException("aaaaaa"); } return a/b; } public static void main(String[] args) { TestThrows tt = new TestThrows(); try { tt.div(); } catch (Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); } } } //如果有finally的话,finally中的代码是在return之前执行的 子类抛出的异常范围,不能宽于父类; 异常类关系: java.lang.Object 继承者 java.lang