
正文
java代码容错机制 java代码错误改正
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java中写一个容错,是指使用try-catch异常处理机制吗?
不完全正确java代码容错机制,java中java代码容错机制的容错java代码容错机制,指的是即使程序在运行中,出现不可预知的错误,也能通过预先编写的代码执行方案,绕过或忽略错误(同时记录下出错信息),使程序运行完,并达到预计结果,
try-catch 是基本的捕获异常手段
相关问答
Q1: java的异常处理机制中,如何判断代码块中是否会发生异常?条件是什么?·
1. 异常机制
异常机制指当程序出现错误程序何处理具体来说异常机制提供java代码容错机制了程序退出安全通道当出现错误程序执行流程发生改变程序控制权转移异常处理器
传统处理异常办法函数返回特殊结来表示出现异常(通常特殊结大家约定俗称)调用该函数程序负责检查并分析函数返回结样做有下弊端java代码容错机制:例函数返回-1代表出现异常函数确实要返回-1正确值时会出现混淆;读性降低程序代码与处理异常代码混爹起;由调用函数程序来分析错误要求客户程序员对库函数有深了解
异常处理流程:
① 遇错误方法立即结束并返回值;同时抛出异常对象
② 调用该方法程序也会继续执行下去而搜索处理该异常异常处理器并执行其代码
2 异常分类
异常分类:
① 异常继承结构:基类ThrowableError和Exception继承ThrowableRuntimeException和IOException等继承Exception具体RuntimeException继承RuntimeException
② Error和RuntimeException及其子类成未检查异常(unchecked)其异常成已检查异常(checked)
每类型异常特点
Error体系 :
Error类体系描述了Java运行系统内部错误及资源耗尽情形应用程序应该抛出种类型对象(般由虚拟机抛出)出现种错误除了尽力使程序安全退出外其方面无能力所进行程序设计时应该更关注Exception体系
Exception体系包括RuntimeException体系和其非RuntimeException体系 :
① RuntimeException:RuntimeException体系包括错误类型转换、数组越界访问和试图访问空指针等等处理RuntimeException原则:出现RuntimeException定程序员错误例通过检查数组下标和数组边界来避免数组越界访问异常
②其非RuntimeException(IOException等等):类异常般外部错误例试图从文件尾读取数据等并程序本身错误而应用环境出现外部错误
与C++异常分类同 :
① JavaRuntimeException类名起并恰当因任何异常都运行时出现(编译时出现错误并异常换句说异常了解决程序运行时出现错误)
② C++logic_error与JavaRuntimeException等价而runtime_error与Java非RuntimeException类型异常等价
3 异常使用方法
声明方法抛出异常
① 语法:throws(略)
② 要声明方法抛出异常
方法否抛出异常与方法返回值类型样重要假设方法抛出异常确没有声明该方法抛出异常客户程序员调用方法而且用编写处理异常代码旦出现异常异常没有合适异常控制器来解决
③ 抛出异常定已检查异常
RuntimeException与Error任何代码产生们需要由程序员显示抛出旦出现错误相应异常会被自动抛出而已检查异常由程序员抛出分两种情况:客户程序员调用会抛出异常库函数(库函数异常由库程序员抛出);客户程序员自己使用throw语句抛出异常遇Error程序员般无能力;遇RuntimeException定程序存逻辑错误要对程序进行修改(相当于调试种方法);只有已检查异常才程序员所关心程序应该且仅应该抛出或处理已检查异常
注意:覆盖父类某方法子类方法能抛出比父类方法更多异常所有时设计父类方法时会声明抛出异常实际实现方法代码却并抛出异常样做目了方便子类方法覆盖父类方法时抛出异常
何抛出异常
① 语法:throw(略)
② 抛出异常对于异常对象真正有用信息时异常对象类型而异常对象本身毫无意义比异常对象类型ClassCastException类名唯有用信息所选择抛出异常时关键选择异常类名能够明确说明异常情况类
③ 异常对象通常有两种构造函数:种无参数构造函数;另种带字符串构造函数字符串作异常对象除了类型名外额外说明
④ 创建自己异常:当Java内置异常都能明确说明异常情况时候需要创建自己异常需要注意唯有用类型名信息所要异常类设计上花费精力
捕获异常
异常没有被处理对于非图形界面程序而言该程序会被止并输出异常信息;对于图形界面程序也会输出异常信息程序并止而返回用错误页面
语法:try、catch和finally(略)控制器模块必须紧接try块面若掷出异常异常控制机制会搜寻参数与异常类型相符第控制器随会进入catch 从句并认异常已得控制旦catch 从句结束对控制器搜索也会停止
捕获多异常(注意语法与捕获顺序)(略)
finally用法与异常处理流程(略)
异常处理做对于Java来说由于有了垃圾收集所异常处理并需要回收内存依有些资源需要程序员来收集比文件、网络连接和图片等资源
应该声明方法抛出异常还方法捕获异常原则:捕捉并处理哪些知道何处理异常而传递哪些知道何处理异常
再次抛出异常
①要再次抛出异常 本级只能处理部分内容有些处理需要更高级环境完成所应该再次抛出异常样使每级异常处理器处理能够处理异常
②异常处理流程 :对应与同try块catch块被忽略抛出异常进入更高级
4 关于异常其问题
① 过度使用异常 :首先使用异常方便所程序员般再愿意编写处理错误代码而仅仅简简单单抛出异常样做对对于完全已知错误应该编写处理种错误代码增加程序鲁棒性另外异常机制效率差
② 异常与普通错误区分开:对于普通完全致错误应该编写处理种错误代码增加程序鲁棒性只有外部能确定和预知运行时错误才需要使用异常
③ 异常对象包含信息 :般情况下异常对象唯有用信息类型信息使用异常带字符串构造函数时字符串还作额外信息调用异常对象getMessage()、toString()或者printStackTrace()方法分别得异常对象额外信息、类名和调用堆栈信息并且种包含信息前种超集
5 常见异常
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件已结束异常:EOFException
文件未找异常:FileNotFoundException
字符串转换数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
方法未找异常:NoSuchMethodException
Q2: 求JAVA编程高手 解决东软变态题目
1、代码的健壮性与可维护性
这个问题是从编码中慢慢积累的。 没有什么固定的答案,应该是考察你编码的经验吧。
健壮, 健壮的程序需要容易扩张, 这样就要求你的程序设计的高内聚,低耦合。
当然这个需要具体细谈,你是怎么实现高内聚、低耦合的。 可以参照设计模式相关的东西。
对于可维护性;我想维护代码首先, 你的代码应该让人能够看懂。 那么一些必要的编码规范是要遵守的。例如命名规范等。 看以看看代码整洁之道, 不过这本书翻译的相当烂。 有能力可以看看英文原版的。
2读取.txt文件
对于这个你可以考虑,建立一个数组, 数组的长度为最高工资数和最低工资数之差, 然后将工资数减去最低工资数就是 该员工对应数组中的位置。 然后再对数组中的员工姓名进行排序就好了。
Q3: Java异常机制是什么
一、异常的关键字:
一般来说,异常的关键字有:try、catch、finally、throw、throws。
网上的资料对这几个关键字是这样解释的:
try: Opening exception-handling statement.
catch: Captures the exception.
finally: Runs its code before terminating the program.
throws: Lists the exceptions a method could throw.
Throw: Transfers control of the method to the exception handler.
try语句
try语句用大括号{}指定了一段代码,该段代码可能会抛弃一个或多个例外。
catch语句
catch语句的参数类似于方法的声明,包括一个例外类型和一个例外对象。例外类型必须为Throwable类的子类,它指明了catch语句所处理的例外类型,例外对象则由运行时系统在try所指定的代码块中生成并被捕获,大括号中包含对象的处理,其中可以调用对象的方法。
catch语句可以有多个,分别处理不同类的例外。Java运行时系统从上到下分别对每个catch语句处理的例外类型进行检测,直到找到类型相匹配的catch语句为止。这里,类型匹配指catch所处理的例外类型与生成的例外对象的类型完全一致或者是它的父类,因此,catch语句的排列顺序应该是从特殊到一般。也可以用一个catch语句处理多个例外类型,这时它的例外类型参数应该是这多个例外类型的父类,程序设计中要根据具体的情况来选择catch语句的例外处理类型。
finally语句
try所限定的代码中,当抛弃一个例外时,其后的代码不会被执行。通过finally语句可以指定一块代码。无论try所指定的程序块中抛弃或不抛弃例外,也无论catch语句的例外类型是否与所抛弃的例外的类型一致,finally所指定的代码都要被执行,它提供了统一的出口。通常在finally语句中可以进行资源的清除工作。如关闭打开的文件等。
throws语句
throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常。对大多数Exception子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型。如果异常的类型是Error或 RuntimeException, 或它们的子类,这个规则不起作用, 因为这在程序的正常部分中是不期待出现的。 如果你想明确地抛出一个RuntimeException,你必须用throws语句来声明它的类型
throw语句
throw总是出现在函数体中,用来抛出一个异常。程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻找含有与其匹配的catch子句的try块。
其实,我个人觉得,简单的来说:throws与throw从拼写上只相差一个s,但是功能、作用上有很大的区别。throws用于在方法和类处声明可能抛出的所有异常信息。throw而throw就是单个语句抛出异常,是指抛出的一个具体的异常类型,使用在方法(类)的内部。
如:
………………………………………………………………………………………………………
public class showUI throws Exception(){
public void tbstudy throws Exception(){
****;//
try{
/* 这里是要处理的异常 */
}
Catch(Exception of){
System.out.println(of);//打印出异常
}
}
}
………………………………………………………………………………………………………
throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法(即调用该方法或类的所有地方);
throw则需要用户自己捕获相关的异常,而后再对其进行相关处理(如打印异常的地方,类型等),最后将处理后的异常信息抛出。
他们对异常处理方式也不同.throws对异常不处理,谁调用谁处理,throws的Exception的取值范围要大于方法内部异常的最大范围,而cathch的范围又要大于throws的Exception的范围;throw 主动抛出自定义异常类对象。
二、异常继承体系
异常的继承结构
三、java处理异常方式
在java代码中如果发生异常,jvm(java虚拟机)会抛出异常对象,导致程序代码中断,这个时候jvm在做的操作就是:创建异常对象,然后抛出,比如:
1.int i= 1;
2.int j = 0;
3.int res = 0;
4.res = i/j;//除0错误
5.System.out.println(res);
这5句代码运行到第四句会中断,因为jvm抛出了异常
2.throw的作用:手动抛出异常。有时候有些错误在jvm看来不是错误,比如:
1. int age = 0;
2. age = -100;
3.System.out.println(age);
很正常的整形变量赋值,但是在我们眼中看来就不正常,谁的年龄会是负的呢?!所以我们需要自己手动引发异常,这就是throw的作用
int age = 0;
age = -100;
if(age0){
Exception e = new Exception(); //创建异常对象
throw e; //抛出异常
}
System.out.println(age);
java中的异常机制
异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。
传统的处理异常的办法是,函数返回一个特殊的结果来表示出现异常(通常这个特殊结果是大家约定俗称的),调用该函数的程序负责检查并分析函数返回的结果。这样做有如下的弊端:例如函数返回-1代表出现异常,但是如果函数确实要返回-1这个正确的值时就会出现混淆;可读性降低,将程序代码与处理异常的代码混叠在一起;由调用函数的程序来分析错误,这就要求客户程序员对库函数有很深的了解。
在使用File类的方法时,如正在将U盘里面的照片复制到电脑里时,有人将U盘拔掉了。这时我们的复制程序就会出错,即抛出异常。当出现程序无法控制的外部环境问题(用户提供的文件不存在或者创建文件时已有同名文件存在,文件内容损坏,网络不可用...)时,JAVA就会用异常对象来描述。
异常情况通常有三大类:
(1)检查性异常:java.lang.Exception
(2)运行期异常:java.lang.RuntimeException
(3)错误:java.lang.Error
它们都是java.lang.Throwable类的子孙类。如右图:
Throwable 类是 Java 语言中所有错误和异常类的父类,对于具体的异常,不应该使用Throwable类,而应该使用其他三者之一。
检查性异常------程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。JAVA编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。
运行期异常------这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,JAVA编译器强制要求处理这类异常。用来表示设计或实现方面的问题,如数组越界等。因为设计和实现正确的程序不会引发这类异常,所以常常不处理它。发生这类异常时,运行时环境会输出一条信息,提示用户修正错误。
错误------一般很少见,也很难通过程序解决。它可能源于程序的bug,但一般更可能源于环境问题,如内存耗尽。错误在程序中无须处理,而有运行环境处理。Error表示很难恢复的错误,如内存越界。一般不期望用户程序来处理,即使程序员有能力处理这种错误,也还是交给系统处理为好。
关于java代码容错机制和java代码错误改正的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







