Java内置了一套异常处理机制,总是使用异常来表示错误。
一,使用try……catch来捕获错误
异常是一种class,因此它本身带有类型信息。异常可以在任何地方抛出,但只需要在上层捕获,这样就和方法调用分离了:
try {
String s = processFile(“C:\\test.txt”); // ok: } catch (FileNotFoundException e) {
// file not found: } catch (SecurityException e) {
// no read permission: } catch (IOException e) {
// io error: } catch (Exception e) {
// other error: }
Java规定:
必须捕获的异常,包括Exception及其子类,但不包括RuntimeException及其子类,这种类型的异常称为Checked Exception。 不需要捕获的异常,包括Error及其子类,RuntimeException及其子类。
public byte[] getBytes(String charsetName) throws UnsupportedEncodingException {
... }
try {
return s.getBytes("GBK"); } catch (UnsupportedEncodingException e) {
// 先记下来再说: e.printStackTrace(); }
所有异常都可以调用printStackTrace()方法打印异常栈,这是一个简单有用的快速打印异常的方法。
二,多个catch和finally
public static void main(String[] args) {
try {
process1(); process2(); process3(); } catch (UnsupportedEncodingException e) {
System.out.println("Bad encoding"); } catch (IOException e) {
System.out.println("IO error"); } finally {
System.out.println("END"); } }
三,异常的传播
和js中一样,异常会不断向上传播,直到被try……catch捕获
public class Main {
public static void main(String[] args) {
try {
process1(); } catch (Exception e) {
e.printStackTrace(); } } static void process1() {
process2(); } static void process2() {
Integer.parseInt(null); // 会抛出NumberFormatException } }
四,空指针异常NullPointerException
空指针异常,就和js中的undefined差不多啦.
try {
String s = null; System.out.println(s.toLowerCase()); } catch (NullPointerException e) {
e.printStackTrace(); }
五,日志的打印
像前端的开发,我们打印日志直接使用console,后端则使用System.out.println(),但是后端是起一个服务给另一方调用,打印显得很麻烦,我们希望有文件可以追溯调用情况.
对于日志的打印.
我们常用的是log4j
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/jjc/10889.html