应用程序开发过程中,对于异常的处理很重要,但是有些异常并不是我们可以事先预知的,那么对于我们没有捕获的异常将由JAVA的默认行为去处理,今天为大家介绍一种用于全局的捕获异常的方式,替代JAVA默认的处理行为。
首先,我们简单的制造一个异常:
public class ExceptionCatch
{
public static void main(String[] args)
{
int i = 10 / 0;
System.out.println(i);
}
}
运行后会提示如下异常信息:
Exception in thread “main” java.lang.ArithmeticException: / by zero
at ExceptionCatch.main(ExceptionCatch.java:5)
这是我们没有处理异常的时候默认的显示方式,现在我们来变更默认的行为。
import java.lang.Thread.UncaughtExceptionHandler;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ExceptionCatch
{
public static void main(String[] args)
{
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e)
{
System.out.println(MessageFormat.format("{0}:{1} has exception:{2}",
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()), t.getName(), e.toString()));
}
});
int i = 10 / 0;
System.out.println(i);
}
}
运行后我们会看到:
2016-01-24 16:40:52:main has exception:java.lang.ArithmeticException: / by zero
这样我们就对JAVA默认的异常处理行为做了变更,如果是安卓的开发者也可以使用该种方式捕获异常,来更改程序默认的崩溃显示样子,更加友好的提示用户。