凡科网做网站教程,盗号和做钓鱼网站那个罪严重,公司建站详细步骤,瀑布流 主题 wordpress1.异常概述和异常处理机制 异常(exception)概述 异常就是程序在运行时出现的意外的#xff0c;不正常的情况。 若异常产生后没有正确的处理#xff0c;会导致程序的中断#xff0c;程序不继续执行,以致造成损失。 2.2 异常处理机制 所以我们在开发中要一套机制来处理各种可能… 1.异常概述和异常处理机制 异常(exception)概述 异常就是程序在运行时出现的意外的不正常的情况。 若异常产生后没有正确的处理会导致程序的中断程序不继续执行,以致造成损失。 2.2 异常处理机制 所以我们在开发中要一套机制来处理各种可能会发生的异常并对其作出正确的处理确保程序的 正常执行。这种机制称为异常处理机制java语言是最先提供异常处理机制的。 异常处理机制可以引导程序向正确的方向运行不至于崩溃。 3 异常处理 java异常处理包含两种代码块。 一种是try...catch,一种是try...catch...finally. 3.1 try...catch 把有可能产生异常的代码放到try中如果产生异常由catch代码块处理。语法 try{ // 可能产生异常的代码块 } catch(异常类型 ex){ // 异常处理 } // 后面如果还有代码无论try中的代码有没有异常这里都会继续执行 try...catch执行有三种情况 : 情况1没有发生异常正常执行 情况2出现异常 catch代码块捕获异常并进行异常处理。处理完成后程序继续执行。 需求1 : 从控制台输入两个数并做除法 import java.util.Scanner; public class TryCatchDemo { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.println(请输入第一个操作数:); try{ int num1 sc.nextInt(); System.out.println(请输入第二个操作数:); int num2 sc.nextInt(); int r num1 / num2; System.out.println(r r); }catch (Exception e){ // 负责处理异常 System.out.println(出现输入不匹配异常然后处理); } System.out.println(程序结束); } } 异常发生后从异常发生的那句代码开始程序不继续向下运行立即转入异常处理。 情况3异常不匹配 import java.util.InputMismatchException; import java.util.Scanner; public class Test01 { public static void main(String[] args) { // 需求:从控制台输入两个数并做除法 Scanner sc new Scanner(System.in); System.out.println(请输入第一个操作数:); try{ int num1 sc.nextInt(); System.out.println(请输入第二个操作数:); int num2 sc.nextInt(); int r num1 / num2; System.out.println(r r); }catch (InputMismatchException e){ // 负责处理异常 System.out.println(出现输入不匹配异常然后处理); } System.out.println(程序结束); } } 异常不匹配程序中断此时我们就需要多重catch了。 3.2 多重catch 可以为try代码书写多个catch用于捕获多个具体的异常。 书写时 : 子类在上父类在下。 import java.util.InputMismatchException; import java.util.Scanner; public class MutiCatchDemo { public static void main(String[] args) { System.out.println(begin); divide(17, 0); System.out.println(ending); } public static void divide(String a, String b) { try { int x Integer.parseInt(a); int y Integer.parseInt(b); System.out.println(x / y); } catch (NumberFormatException e) { //处理数字格式化异常的代码 System.out.println(字符串不包含可解析的整数); } catch (ArithmeticException e) { //处理算术异常的代码 System.out.println(除数不能为0); } catch (Exception e) { //处理其他未知的异常 System.out.println(未知异常); } } } 3.3 异常对象 异常对象是出现异常时的那条语句产生的(jvm 自动创建)。 异常在java类中通过Exception或其具体子类创建大多数情况下都是由其子类命名方式:异常类型 Exception创建 Exception是所有异常类的父类。 常用方法 方法介绍 toString 返回异常类型和异常信息 getMessage 返回异常信息 printStackTrace 打印堆栈信息(红色)。包含了异常信息异常类型异常位置方便程序开发 阶段的调试一般要打开也是JVM默认的异常处理机制 java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nextInt(Scanner.java:2117) at java.util.Scanner.nextInt(Scanner.java:2076) at com.kal02.exception02.Test02.main(Test02.java:14) 异常堆栈信息 第一句:表示异常类型和异常的Message构成 最后一句:包含具体发生异常的全路径类,方法,产生异常语句的行数。 com.kal02.exception02.Test02.main(Test02.java:14) 3.4 try...catch...finally try...catch 和之前一样用于捕获并处理异常 finally代码块用于处理异常后的收尾工作。 不管是否发生异常 finally总执行。 finally的收尾工作包含释放内存、关闭文件、关闭网络连接、关闭数据库、关闭... step 1: 打开文件 step 2: 操作文件 step 3: 关闭文件 存在return的try...catch...finally public class TryCatchFinallyDemo { public static int div(int a,int b) { int r 0; try { r a / b; return r; } catch (Exception e) { System.out.println(e.toString()); } finally { System.out.println(我是finally); } return r; } public static void main(String[] args) { System.out.println(div(10,0));; System.out.println(程序正常结束); } } 总结 . 存在return的try...catch...finally块finally先执行然后执行return return 总是最后执行的。 添加try-catch快捷键 IDEA : Ctrl Alt T 4 异常分类 4.1 异常的继承体系 Throwable类有两个子类Error和Exception分别表示错误和异常。 Exception 和Error的子类大都是以Error或Exception作为类名后缀。 4.1.1 Error Error表示代码运行时 JVMJava 虚拟机出现的问题。如系统崩溃或内存溢出等不需要处理 Error 常见的Error StackoverflowError当应用程序递归太深而发生堆栈溢出时抛出该错误。比如死循环或者没有 出口的递归调用。 outofMemoryError因为内存溢出或没有可用的内存提供给垃圾回收器时 Java 虚拟机无法分配 一个对象这时抛出该错误。比如new了非常庞大数量的对象而没释放。 1.4.2 Exception Exception表示程序在运行时出现的一些不正常情况 一般大多数表示轻度到中度的问题属于 可预测、可恢复问题。如除数为0数组索引越界等这种情况下程序员通过合理的异常处理确保程 序的正常运行直到结束常见的Exception ArrayIndexoutofBoundsException用非法索引访问数组时抛出的异常。如果索引为负或大于等 于数组大小则该索引为非法索引。 ArithmeticException:当出现异常的运算条件时抛出此异常。例如 一个整数“除以零”时抛出 此类的一个实例。 . NullPointerException当应用程序试图在需要对象的地方使用 null 时抛出该异常。这种情况包 括 异常体系分成 checked 编译异常和runtime运行异常。 划分规则是 RuntimeException和其子类属于运行时异常异常除了运行时异常其他都是编译时异 常。 4.2 异常分类 4.2.1 运行时异常 runtime异常顾名思义在编译时期不被检测只有在运行时期才会被检查出来。 运行异常可以不使用try...catch处理但一旦出现异常就将由JVM处理打印堆栈信息。 RuntimeException 运行时异常通常是指因设计或实现方式不当而导致的问题。程序员小心谨慎是可 以避免的异常。如事先判断对象是否为null就可以避免NullPointerException异常事先检查除数不为 0就可以避免ArithmeticException异常。 运行时异常特点 在编译阶段Java编译器检查不出来。 一般的程序可以不用使用try-catch和throws处理运行异常。 简而言之 对于运行时异常程序可处理(使用try-catch或throws处理)可不处理。 4.2.2 编译时异常 编译时异常顾名思义就是在编译时期就会被检测到的异常。除了RuntimeException以及子类以 外其他的Exception及其子类都是编译异常有时候也称之为检查时异常。 编译时异常特点 在编译阶段Java编译器会检查出异常也就说程序中一旦出现这类异常要么使用try-catch语句 捕获要么使用throws语句声明抛出它否则编译就不会通过。 简而言之 程序要求必须处理编译异常使用try-catch或throws处理。 常见面试题请罗列常见的运行时异常和编译时异常3-5个 编译时异常(检查时异常) :程序必须做出处理 一般继承于Exception 运行时异常程序可处理也可不处理。都继承于RuntimeException 意识遇到不懂的异常类时首先要分辨它属于检查时还是运行时异常。通过快捷键ctrlh查看 5 声明异常 5.1 throws 在Java语言中通过throws声明某个方法可能抛出的各种异常。 当方法的定义者在定义方法时知道调用该方法时可能出现异常定义者又不知道如何处理时此时方法 定义者可以选择声明异常使用throws关键字可以声明多个异常用( , )号分隔。形式 [修饰符] 返回值类型 方法名(形参列表) throws 异常1,异常2,...{ } 需求1声明异常 public class Test01Throws { // divide方法可能有异常但divide处理不了该异常就通过throws声明异常让divide方法的调 用者来处理 public static void divide(int a, int b) throws Exception { System.out.println(a / b); } public static void main(String[] args) { try { divide(3, 1); divide(1, 0);// 调用divide方法调用者必须处理或再次抛出 } catch (Exception e) { e.printStackTrace(); } } } 声明异常的原因该方法自身处理不了该异常只能使用throws提醒该方法的调用者需要处理异常。当 然调用者也有两种处理方式 自己捕获处理或再次声明要么try...catch ,要么也throws。 需求2异常继续上抛 public class Test01Throws { public static void main(String[] args) throws Exception{ // 调用divide方法调用者必须处理或再次抛出 divide(1, 0); } //divide方法可能有异常但divide处理不了该异常就抛出让divide方法的调用者来处理 public static void divide(int a, int b) throws Exception { System.out.println(a / b); } } 在异常声明或者上抛出的过程中应该遵循以下原则能在调用处明确处理优先处理否则继续上抛。 声明异常时要根据异常的分类来确定是否外界(调用处)是否必须处理该方法产生的异常。如果需要外界必 须处理需要声明检查时异常否则声明运行时异常。 6 手动抛出异常 throw 在实际开发过程中开发者也可以根据程序的需要手动抛出异常通过throw关键字。语法 XxException ex new XxException(); throw ex; 或者 throw new XxException(); 当程序出现某种逻辑问题时由程序员主动抛出某种特定类型的异常。 public class ThrowDemo { public static void main(String[] args) { try { ThrowDemo.isExist(will); } catch (Exception e) { System.out.println(e.getMessage());//对不起用户名will已经存在 } } public static boolean isExist(String userName) throws Exception { String[] data { will, lucy, lily }; // 模拟已经注册的用户名 if (userName ! null userName.length() 0) { for (String name : data) { if (name.equals(userName)) {// 用户名相同证明该用户已经存在 // 手动抛出一个异常表示存在的不正常情况 throw new Exception(对不起用户名 userName 已经存在); } } } return false; } } 7 自定义异常 当JDK 中的异常类型不能满足程序的需要时也即需要定义具体的业务异常时可以自定义异常。 自定义异常的步骤 [1] 确定异常类型编译时异常、运行时异常。 [2] 继承异常的父类(编译时异常Exception、运行时异常RuntimeException) [3] 声明构造方法 public class Student {
private String name;
private int age;public Student(String name, int age) {
this.name name;
this.setAge(age);
}public Student() { }public String getName() {
return name;
}public void setName(String name) {
this.name name;
}public int getAge() {
return age;
}public void setAge(int age) throws AgeException{
if( age 0 || age 120 ) {
// System.out.println(年龄值不合法);
// 能否手动抛出一个年龄异常呢
AgeException ex new AgeException(年龄值不能小于0或者不能大于120); throw ex;
} else {
this.age age;
}
}
} 测试 public class CustomExceptionDemo { public static void main(String[] args) { Student s1 new Student(二狗,20); try { s1.setAge(130); } catch (AgeException e) { // System.out.println(e.toString()); System.out.println(e.getMessage()); } } }
文章转载自: http://www.morning.bszmy.cn.gov.cn.bszmy.cn http://www.morning.rjrnx.cn.gov.cn.rjrnx.cn http://www.morning.lsmnn.cn.gov.cn.lsmnn.cn http://www.morning.nfbxgtj.com.gov.cn.nfbxgtj.com http://www.morning.sgbk.cn.gov.cn.sgbk.cn http://www.morning.xfncq.cn.gov.cn.xfncq.cn http://www.morning.gxklx.cn.gov.cn.gxklx.cn http://www.morning.nzfjm.cn.gov.cn.nzfjm.cn http://www.morning.kwnbd.cn.gov.cn.kwnbd.cn http://www.morning.nrfqd.cn.gov.cn.nrfqd.cn http://www.morning.wflsk.cn.gov.cn.wflsk.cn http://www.morning.ccyjt.cn.gov.cn.ccyjt.cn http://www.morning.wyjpt.cn.gov.cn.wyjpt.cn http://www.morning.xbkcr.cn.gov.cn.xbkcr.cn http://www.morning.bpncd.cn.gov.cn.bpncd.cn http://www.morning.ttkns.cn.gov.cn.ttkns.cn http://www.morning.lfqtp.cn.gov.cn.lfqtp.cn http://www.morning.snnkt.cn.gov.cn.snnkt.cn http://www.morning.mrckk.cn.gov.cn.mrckk.cn http://www.morning.prgyd.cn.gov.cn.prgyd.cn http://www.morning.osshjj.cn.gov.cn.osshjj.cn http://www.morning.fpzz1.cn.gov.cn.fpzz1.cn http://www.morning.rjnx.cn.gov.cn.rjnx.cn http://www.morning.lzbut.cn.gov.cn.lzbut.cn http://www.morning.ljcf.cn.gov.cn.ljcf.cn http://www.morning.rgpy.cn.gov.cn.rgpy.cn http://www.morning.ypqwm.cn.gov.cn.ypqwm.cn http://www.morning.tfei69.cn.gov.cn.tfei69.cn http://www.morning.ypcd.cn.gov.cn.ypcd.cn http://www.morning.kybjr.cn.gov.cn.kybjr.cn http://www.morning.dhyzr.cn.gov.cn.dhyzr.cn http://www.morning.pbsfq.cn.gov.cn.pbsfq.cn http://www.morning.cgmzt.cn.gov.cn.cgmzt.cn http://www.morning.rlns.cn.gov.cn.rlns.cn http://www.morning.gtkyr.cn.gov.cn.gtkyr.cn http://www.morning.yqwsd.cn.gov.cn.yqwsd.cn http://www.morning.llcgz.cn.gov.cn.llcgz.cn http://www.morning.fbpyd.cn.gov.cn.fbpyd.cn http://www.morning.mhmsn.cn.gov.cn.mhmsn.cn http://www.morning.rkkh.cn.gov.cn.rkkh.cn http://www.morning.mqldj.cn.gov.cn.mqldj.cn http://www.morning.ymdhq.cn.gov.cn.ymdhq.cn http://www.morning.dnls.cn.gov.cn.dnls.cn http://www.morning.qlrtd.cn.gov.cn.qlrtd.cn http://www.morning.mknxd.cn.gov.cn.mknxd.cn http://www.morning.qzpsk.cn.gov.cn.qzpsk.cn http://www.morning.bdqpl.cn.gov.cn.bdqpl.cn http://www.morning.kgltb.cn.gov.cn.kgltb.cn http://www.morning.rgtp.cn.gov.cn.rgtp.cn http://www.morning.qnxtz.cn.gov.cn.qnxtz.cn http://www.morning.tqjks.cn.gov.cn.tqjks.cn http://www.morning.blxor.com.gov.cn.blxor.com http://www.morning.cknsx.cn.gov.cn.cknsx.cn http://www.morning.jnzfs.cn.gov.cn.jnzfs.cn http://www.morning.skbbt.cn.gov.cn.skbbt.cn http://www.morning.yckwt.cn.gov.cn.yckwt.cn http://www.morning.jyjqh.cn.gov.cn.jyjqh.cn http://www.morning.lfqtp.cn.gov.cn.lfqtp.cn http://www.morning.mzpd.cn.gov.cn.mzpd.cn http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn http://www.morning.jjmrx.cn.gov.cn.jjmrx.cn http://www.morning.mspqw.cn.gov.cn.mspqw.cn http://www.morning.yrnll.cn.gov.cn.yrnll.cn http://www.morning.plfy.cn.gov.cn.plfy.cn http://www.morning.hhxwr.cn.gov.cn.hhxwr.cn http://www.morning.lblsx.cn.gov.cn.lblsx.cn http://www.morning.ssmhn.cn.gov.cn.ssmhn.cn http://www.morning.rxpp.cn.gov.cn.rxpp.cn http://www.morning.rqrxh.cn.gov.cn.rqrxh.cn http://www.morning.bqts.cn.gov.cn.bqts.cn http://www.morning.jfnbh.cn.gov.cn.jfnbh.cn http://www.morning.hmktd.cn.gov.cn.hmktd.cn http://www.morning.homayy.com.gov.cn.homayy.com http://www.morning.ssjtr.cn.gov.cn.ssjtr.cn http://www.morning.dnqpq.cn.gov.cn.dnqpq.cn http://www.morning.rqkk.cn.gov.cn.rqkk.cn http://www.morning.tmfm.cn.gov.cn.tmfm.cn http://www.morning.jpjpb.cn.gov.cn.jpjpb.cn http://www.morning.hwcln.cn.gov.cn.hwcln.cn http://www.morning.clpdm.cn.gov.cn.clpdm.cn