当前位置: 首页 > news >正文

桥西做网站成都宅天下装饰公司口碑

桥西做网站,成都宅天下装饰公司口碑,服装网站建设策划书,奇趣网做网站1.异常 1.1 异常概述 异常是指程序在运行过程中出现的非正常的情况#xff0c;如用户输入错误、除数为零、文件不存在、数组下标越界等。由于异常情况再程序运行过程中是难以避免的#xff0c;一个良好的应用程序除了满足基本功能要求外#xff0c;还应具备预见并处理可能发…1.异常 1.1 异常概述 异常是指程序在运行过程中出现的非正常的情况如用户输入错误、除数为零、文件不存在、数组下标越界等。由于异常情况再程序运行过程中是难以避免的一个良好的应用程序除了满足基本功能要求外还应具备预见并处理可能发生的各种异常情况。因此在开发中需要充分考虑各种意外情况以提高程序的容错能力。异常处理事一种技术用于处理这种异常情况。 我们阅读下面的代码通过这段代码来认识异常。 我们调用一个方法时经常一不小心就出异常了然后在控制台打印一些异常信息。其实打印的这些异常信息就叫做异常。 public class ExceptionTest01 {public static void main(String[] args) {System.out.println(Integer.valueOf(abc));} }运行之后会出现如下的页面: 因为在设计这个方法的时候在方法中对调用者传递的参数进行校验如果校验数据不合法就会将异常信息封装成一个对象并抛出JVM接收到异常对象之后就把异常打印了。 public static Integer valueOf(String s) throws NumberFormatException {return Integer.valueOf(parseInt(s, 10)); }因为写代码时经常会出现问题Java的设计者们早就为我们写好了很多个异常类来描述不同场景下的问题。而有些类是有共性的所以就有了异常的继承体系。 1.1.1 异常的体系 所有异常类都是Throwable类的子类它派生出两个子类 Error 类和 Exception 类: 1 Error 类表示程序无法恢复的严重错误或者恢复起来比较麻烦的错误例如内存溢出、动态链接失败、虚拟机错误等。应用程序不应该主动抛出这种类型的错误通常由虚拟机自动抛出。如果出现这种错误最好的处理方式是让程序安全退出。在进行程序设计时我们更应关注Exception类。        2Exception类由Java应用程序抛出和处理的非严重错误例如文件未找到、网络连接问题、算术错误如除以零、数组越界、加载不存在的类、对空对象进行操作、类型转换异常等。Exception类的不同子类对应不同类型的异常。Exception类又可分为两大类异常 不受检异常也称为unchecked异常包括RuntimeException及其所有子类。对这类异常并不要求强制进行处理例如算术异常ArithmeticException等。受检异常也称为checked异常指除了不受检异常外其他继承自Exception类的异常。对这类异常要求在代码中进行显式处理。 Java提供了多种异常类下表列举了一些常见的异常类及其用途 1.2 Java异常处理机制 1.2.1 异常处理 Java的异常处理机制类似于人们对可能发生的意外情况进行预先处理的方式。在程序执行过程中如果发生了异常程序会按照预定的处理方式对异常进行处理。处理完异常之后程序会继续执行。如果异常没有被处理程序将会终止运行。 Java的异常处理机制依靠以下 5 个关键字try、catch、finally、throw、throws。这些关键字提供了两种异常处理方式。 1使用try、catch、finally来捕获和处理异常 try 块中包含可能会抛出异常的代码。catch 块中用于捕获并处理指定类型的异常。finally 块中的代码无论是否发生异常都会被执行通常用于释放资源或清理操作。 package swp.kaifamiao.codes.Java.d0830;/*** {class description}** author SWP* version 1.0.0*/ public class Main {public static void main(String[] args) {try {int i 1, j 0, res;System.out.println(begin);res i / j;System.out.println(end);}catch (ArithmeticException e){System.out.println(caught);e.printStackTrace();}finally {System.out.println(finally);}System.out.println(over);} }运行效果 2使用throw、throws 来抛出异常 ① 使用throws声明抛出异常 try-catch-finally 处理的是在方法内部发生的异常在方法内部直接捕获并处理。如果在一个方法体内抛出了异常并希望调用者能够及时地捕获异常Java语言中通过关键字throws声明某个方法可能抛出的各种异常以通知调用者。throws 可以同时声明多个异常之间用逗号隔开。 package swp.kaifamiao.codes.Java.d0830;import java.util.InputMismatchException; import java.util.Scanner;/*** {class description}** author SWP* version 1.0.0*/ public class Demo01 {public static void main(String[] args) {try {divide();}catch (InputMismatchException e){System.out.println(除数和被除数必须都是整数);}catch (ArithmeticException e){System.out.println(除数不能为零);}catch (Exception e){System.out.println(其他异常 e.getMessage());}finally {System.out.println(感谢使用本程序);}System.out.println(程序结束);}/**通过throws声明抛出设计时异常*/public static void divide() throws Exception{Scanner input new Scanner(System.in);System.out.println(计算开始);int i, j, res;System.out.println(请输入被除数);i input.nextInt();System.out.println(请输入除数);j input.nextInt();res i / j;System.out.println(i / j res);System.out.println(计算结束);} }②使用throw声明抛出异常 除了系统自动抛出异常外在编程过程中有些问题是系统无法自动发现并解决的如年龄不在正常范围之内性别输入的不是“男”或“女”等此时需要程序员而不是系统来自行抛出异常把问题提交给调用者去解决。在Java语言中可以使用throw关键字来自行抛出异常。 throw new Exception(message)如果 throw 语句抛出的异常是 Checked 异常则该 throw 语句要么处于 try 块⾥显式捕获该异常要么放在⼀个带 throws 声明抛出的⽅法中即把该异常交给该⽅法的调⽤者处理如果 throw 语句抛出的异常是 Runtime 异常则该语句⽆须放在 try 块⾥也⽆须放在带 throws 声明抛出的⽅法中程序既可以显式使⽤ try…catch来捕获并处理该异常也可以完全不理会该异常把该异常交给该⽅法调⽤者处理。 自行抛出Runtime 异常比自行抛出Checked 异常的灵活性更好。同样抛出 Checked 异常则可以让编译器提醒程序员必须处理该异常。 1.2.2 自定义异常 当JDK中的异常类型不能满足程序需求时可以自定义异常类使用自定义异常类一般有以下几个步骤        1定义异常类并继承Exception 或RuntimeException        2编写异常类的构造方法向父类构造方法传入异常描述信息并继承父类的其他实现方法        3实例化自定义异常对象并在程序中使用throw抛出。 举例实现以下需求 需求写一个saveAge(int age)方法在方法中对参数age进行判断如果age0或者150就认为年龄不 合法如果年龄不合法就给调用者抛出一个年龄非法异常。 分析Java的API中是没有年龄非常这个异常的所以我们可以自定义一个异常类用来表示年龄非法异常然后再方法中抛出自定义异常即可。 自定义一个AgeIllegalException异常类 package swp.kaifamiao.codes.Java.d0830;/*** {class description}* 自定义异常类 AgeIllegalException* 继承 Exception 类* 用于表示年龄不合法的异常* author SWP* version 1.0.0*/ public class AgeIllegalException extends Exception {public AgeIllegalException() {}public AgeIllegalException(String message) {super(message);} }package swp.kaifamiao.codes.Java.d0830;/*** {class description}* 异常测试类 ExceptionTest* 用于测试自定义异常 AgeIllegalException* 当年龄不合法时抛出 AgeIllegalException 异常* 并在 main 方法中捕获并处理该异常* author SWP* version 1.0.0*/ public class ExceptionTest {public static void main(String[] args) {try {saveAge(225);System.out.println(saveAge2底层执行是成功的);} catch (AgeIllegalException e) {e.printStackTrace();System.out.println(saveAge2底层执行是出现bug的);}}// 在方法中对age进行判断不合法则抛出AgeIllegalExceptionpublic static void saveAge(int age) throws AgeIllegalException {if (age 0 age 150) {System.out.println(年龄被成功保存 age);} else {// 用一个异常对象封装这个问题// throw 抛出去这个异常对象throw new AgeIllegalException(age is illegal, your age is age);}} }运行效果 1.2.3 异常链 异常链Exception Chaining是指在异常处理过程中将当前的异常作为原因cause链接到另一个异常上。通过异常链可以追踪异常发生的完整路径并提供更多的上下文信息。 1定义testOnetestTwotestThree方法testTwo对testOne抛出的异常进行捕获testThree对testTwo抛出的异常进行捕获 package swp.kaifamiao.codes.Java.d0830;/*** {class description}** author SWP* version 1.0.0*/ public class TryDemoFive {public static void main(String[] args) {try {testThree();} catch (Exception e) {// 打印完整的异常信息e.printStackTrace();}}public static void testOne() throws MyException {throw new MyException(我是一个异常);}public static void testTwo() throws Exception {try {testOne();} catch (Exception e) {// 在新抛出的异常中添加原来的异常信息throw new Exception(我是新产生的异常1, e);}}public static void testThree() throws Exception {try {testTwo();} catch (Exception e) {// 在要抛出的对象中使用 initCause() 方法添加上一个产生异常的信息Exception e2 new Exception(我是新产生的异常2);e2.initCause(e);throw e2;}} }2定义MyException 类 package swp.kaifamiao.codes.Java.d0830;/*** {class description}** author SWP* version 1.0.0*/ public class MyException extends Exception{public MyException(String message) {super(message);} }3运行效果 2.思考 2.1 什么是异常 异常是指程序在运行过程中出现的非正常的情况如用户输入错误、除数为零、文件不存在、数组下标越界等。2.2 什么是运行时异常 运行时异常Runtime Exception是指在程序运行期间可能抛出的异常它们属于非受检异常Unchecked Exception。与受检异常Checked Exception相比运行时异常在编译期不需要强制处理或声明。运行时异常通常表示程序的逻辑错误或者错误的使用方式例如数组越界、空指针引用等。这些异常通常是由程序员编码时的错误导致的但在编译时却无法确定是否会发生异常。2.3 如何处理异常 (1) 使用try、catch、finally来捕获和处理异常; (2) 使用throw、throws 来抛出异常2.4 什么是checked异常什么是unchecked异常 (1) 受检异常是在编译时强制要求处理的异常需要使用 try-catch 块捕获并处理或者在方法签名中使用 throws 关键字声明异常。 (2) 非受检异常是由程序逻辑错误或错误的使用方式引起的异常在编译时不需要强制要求处理但仍可以选择性地进行捕获和处理。2.5 构造方法可以throws异常吗对子类有影响吗有什么影响 可以在构造方法中抛出异常与其他方法一样构造方法也可以声明受检异常并通过 throws 关键字将其抛出。 如果在父类的构造方法中声明了受检异常那么所有继承自该类的子类构造方法必须显示地处理这些异常或者在它们的方法签名中使用 throws 关键字将其抛出。否则编译会报错。2.6 throw和throws的区别 (1) 作⽤不同throw⽤于程序员⾃⾏产⽣并抛出异常throws⽤于声明该⽅法内抛出了异常。 (2) 使⽤位置不同throw位于⽅法体内部可以作为单独的语句使⽤throws必须跟在⽅法参数列表的后⾯不能单独使⽤。 (3) 内容不同throw抛出⼀个异常对象只能是⼀个throws后⾯跟异常类可以跟多个。2.7 能否自己throw一个Error 可以使用 throw 关键字抛出一个 Error 对象。在Java中Error 是 Throwable 类的子类它表示严重的错误和异常情况通常由Java虚拟机JVM或底层系统引起例如 OutOfMemoryError、StackOverflowError 等。与 Exception 不同Error 通常表示不可恢复的错误或系统级故障它们是无法预料和处理的一般不建议程序员捕获和处理 Error。通常情况下Error 会导致程序中止执行。以下是一个示例演示如何抛出一个 Error public class Example {public static void main(String[] args) {throw new Error(This is an error.);} }需要注意的是抛出 Error 可能会导致程序异常终止并且不应该被常规的异常处理机制所捕获和处理。因此在编写代码时通常不建议自己抛出 Error除非确实具有特殊的需求或深入了解它们的影响。一般的异常处理应该针对 Exception 及其子类。 2.8 假如throw里面有return语句catch里面有return语句finally里面也有return语句为什么最后返回的是finally里面的return语句 在 Java 中finally 块中的 return 语句会覆盖之前的 try 或 catch 块中的 return 语句并决定最终的返回值。这是因为无论在 try、catch 或者 finally 块中执行了哪个 return 语句都会直接结束整个方法并返回对应的值。根据 Java 语言规范finally 块中的 return 语句会在方法返回之前执行以确保在方法返回之前可以进行一些必要的清理工作。所以在 finally 块中使用 return 语句将决定最终的返回值。2.9 为啥要自定义异常如何自定义异常 当JDK中的异常类型不能满足程序需求时可以自定义异常类自定义异常在编程中非常有用它能够提供更加准确和具体的异常信息并能够满足特定业务需求。通过自定义异常可以将代码中可能发生的异常情况进行分类和处理使代码更加清晰、可读性更高并且有助于调试和错误处理。1定义异常类并继承Exception 或RuntimeException 2编写异常类的构造方法向父类构造方法传入异常描述信息并继承父类的其他实现方法 3实例化自定义异常对象并在程序中使用throw抛出。
http://www.w-s-a.com/news/296899/

相关文章:

  • 以个人名义做地方门户网站社保服务个人网站
  • 上海企业做网站设计制作感悟150字
  • asp.netmvc网站开发ps设计网页
  • win2008 挂网站 404官方网站是什么
  • 网站只做内容 不做外链做姓氏图的网站
  • 中国建设银行信用卡黑名单网站wordpress怎么解密密码
  • 建设银行如何网站设置密码广州网站营销推广
  • 企业做网站的步骤与做网站注意事项四川省住房建设厅网站打不开
  • 网页设计网站规划报告百度文库官网登录入口
  • 郑州医疗网站开发wordpress能注册
  • 创建网站的英语石家庄微信网站建设
  • 分享几个x站好用的关键词微信商城小程序开发一般需要多少钱
  • 做韩国外贸网站wordpress手机版中文
  • 建站群赚钱有前途吗蚌埠北京网站建设
  • 北京网站建设求职简历十堰seo优化教程
  • 网站顶部可关闭广告微信小程序多少钱
  • 网站背景怎么弄斜杠青年seo工作室
  • ps个人网站首页怎么制作如何做网站的版块规划
  • 做网站的市场开源建站工具
  • 邹平做网站哪家好自动点击器app
  • 南阳seo网站排名优化wordpress文章对游客不显示
  • 网站301什么意思湛江市seo网站设计报价
  • 免费建造网站化妆品网络营销方案
  • 建公司网站wordpress the content
  • 网站的站点的管理系统建设银行网站注册企业
  • 长春火车站是哪个站做微商哪个网站有客源
  • 亚马逊培训费用一般多少seo专业培训课程
  • 做推文封面图网站南宁高端网站建设
  • 天津网站搜索排名做电影免费ppt模板下载网站
  • 襄樊最好网站建设价格网站建设与设计 毕业设计