美文网首页
关于java异常你可能忽略了这些

关于java异常你可能忽略了这些

作者: sollian | 来源:发表于2019-02-14 16:12 被阅读1次

1 OOM可以被捕获

程序发生Error,通常认为是不可控的,但有时也可以对Error进行一定的处理,比如android源码中,View的处理:

            try {
                bitmap = Bitmap.createBitmap(mResources.getDisplayMetrics(),
                        width, height, quality);
                bitmap.setDensity(getResources().getDisplayMetrics().densityDpi);
                if (autoScale) {
                    mDrawingCache = bitmap;
                } else {
                    mUnscaledDrawingCache = bitmap;
                }
                if (opaque && use32BitCache) bitmap.setHasAlpha(false);
            } catch (OutOfMemoryError e) {
                // If there is not enough memory to create the bitmap cache, just
                // ignore the issue as bitmap caches are not required to draw the
                // view hierarchy
                if (autoScale) {
                    mDrawingCache = null;
                } else {
                    mUnscaledDrawingCache = null;
                }
                mCachingFailed = true;
                return;
            }

2 受检异常和非受检异常

网上有很多学习资料,但我们要说的是真正编码时,碰到的不同

图1

同样是throw语句,第一个出现了编译错误,鼠标放上去,会提示Unhandled exception:java.lang.Throwable;第二个却没有问题。原因就在于RuntimeException及其子类是非受检异常,可以直接抛出,其他类型为受检异常,必须做相应处理,这里通过RuntimeException进行了包装。
打印的堆栈信息如下:

Exception in thread "main" java.lang.RuntimeException: java.lang.Throwable: 我是谁
    at com.sollian.sourcestudy.JavaTest.main(JavaTest.java:12)
Caused by: java.lang.Throwable: 我是谁
    at com.sollian.sourcestudy.JavaTest.main(JavaTest.java:11)

明白了上述区别,那以后自定义异常时,是继承自Exception还是RuntimeException,应该就有自己的判断了。如果必须要求处理,就继承Exception,否则继承RuntimeException。

3 throw throws是两个关键字

    public void get() throws TimeoutException {
        throw new TimeoutException("");
    }

throws关键字后跟RuntimeException是没有意义的,只处理受检异常即可。

相关文章

  • 关于java异常你可能忽略了这些

    1 OOM可以被捕获 程序发生Error,通常认为是不可控的,但有时也可以对Error进行一定的处理,比如andr...

  • Java运行时异常

    关于Java&Android面试题中时常提到的Java常见的运行时异常。 Java运行时异常可能是Java虚拟机正...

  • 深入探讨Java中的异常与错误处理

    Java中的异常处理机制已经比较成熟,我们的Java程序到处充满了异常的可能,如果对这些异常不做预先的处理,那么将...

  • 异常基本概念及处理异常

    异常: 在java中还提供了大量的异常类,这些类都是继承自java.long.Throwable类。 ...

  • java7特性

    标签:java java7 特性 异常处理 异常类的构造器有可以接受两个参数,分别用来禁用忽略异常和禁用堆栈跟踪 ...

  • 自己的事情自己做,线程异常处理

    之前使用线程执行任务的时候,总是忽略了线程异常的处理,直到最近看书 线程出现异常测试类 任务类:Task.java...

  • 总是搞不定排版?你可能忽略了这些。

    PPT排版怎样才显得高大上?PPT怎么排版才更有设计感?怎样做出让人看着舒服的排版? 相信很多人都有这样的疑问。我...

  • Checked Exception是恶魔

    关于异常处理,Java是孤独的。因为只有Java有Checked Exception(受检查异常)。其他语言,比如...

  • 【JVM】Java内存区域详解

    本文将介绍了 Java 虚拟机内存的各个区域以及这些区域的作用、服务对象和其中可能出现的异常等。 JVM 运行时数...

  • 如何让辣椒长得快?你可能忽略了这些

    中国的辣椒,是全世界都出名的,主要是因为中国的食物很多都离不开辣椒,因此有很多农民都喜欢种植辣椒,但种植辣椒特别讲...

网友评论

      本文标题:关于java异常你可能忽略了这些

      本文链接:https://www.haomeiwen.com/subject/iwbeeqtx.html