@@ -484,15 +484,15 @@ public final class PasswordEditText extends EditText
|
484 | 484 |
|
485 | 485 | #### 异常捕获规范
|
486 | 486 |
|
487 |
| -* 请不要使用此方式捕获异常,因为这种方式会把问题给隐藏掉,会加大后续排查问题的难度 |
| 487 | +* 请不要使用此方式捕获异常,因为这种方式会把问题给隐藏掉,从而会加大后续排查问题的难度。 |
488 | 488 |
|
489 | 489 | ```java
|
490 | 490 | try {
|
491 | 491 | Xxx.xxx();
|
492 | 492 | } catch (Exception e) {}
|
493 | 493 | ```
|
494 | 494 |
|
495 |
| -* 如需捕获异常,请用以下方式进行捕获 |
| 495 | +* 如需捕获异常,请用以下方式进行捕获,列出具体的异常类型,并在代码中输出对应的日志。 |
496 | 496 |
|
497 | 497 | ```java
|
498 | 498 | // 捕获这个异常,避免程序崩溃
|
@@ -508,7 +508,46 @@ try {
|
508 | 508 | }
|
509 | 509 | ```
|
510 | 510 |
|
511 |
| -* 必须要在 try 块中说明崩溃的缘由,并注明抛出的异常信息,并在代码中输出对应的日志。 |
| 511 | +* 如果这个异常不是通过方法 throws 关键字抛出,则需要在 try 块中说明崩溃的缘由,并注明抛出的异常信息。 |
| 512 | + |
| 513 | +--- |
| 514 | + |
| 515 | +* 有异常就一定要 `try catch` ?,这种想法其实是错的,例如我们项目用 Glide 加载图片会抛出以下异常: |
| 516 | + |
| 517 | +```java |
| 518 | +Caused by: java.lang.IllegalArgumentException: You cannot start a load for a destroyed activity |
| 519 | +at com.bumptech.glide.manager.RequestManagerRetriever.assertNotDestroyed(RequestManagerRetriever.java:348) |
| 520 | +at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:148) |
| 521 | +at com.bumptech.glide.Glide.with(Glide.java:826) |
| 522 | +``` |
| 523 | + |
| 524 | +* 这是因为 Activity 的销毁了而去加载图片导致的(场景:异步执行图片加载),大多人的解决方式可能是: |
| 525 | + |
| 526 | +```java |
| 527 | +try { |
| 528 | +// Activity 销毁后执行加载图片会触发 crash |
| 529 | +Glide.with(this) |
| 530 | +.load(url) |
| 531 | +.into(mImageView); |
| 532 | +} catch (IllegalArgumentException e) { |
| 533 | +// java.lang.IllegalArgumentException: You cannot start a load for a destroyed activity |
| 534 | +e.printStackTrace(); |
| 535 | +} |
| 536 | +``` |
| 537 | + |
| 538 | +* 虽然这种方式可以解决 **crash** 的问题,但是显得**不够严谨**,Glide 抛异常给外层,其实无非就想告诉调用者,调用的时机错了,正确的处理方式不是直接捕获这个异常,而是应该在外层做好逻辑判断,避免会进入出现 **crash** 的代码,正确的处理示例如下: |
| 539 | + |
| 540 | +```java |
| 541 | +if (isFinishing() || isDestroyed()) { |
| 542 | +// Glide:You cannot start a load for a destroyed activity |
| 543 | +return; |
| 544 | +} |
| 545 | +Glide.with(this) |
| 546 | +.load(url) |
| 547 | +.into(mImageView); |
| 548 | +``` |
| 549 | + |
| 550 | +* 所以尽量不要通过 `try catch` 的方式来处理异常,除非外层真的判断不了,否则应该通过一些逻辑判断来避免进入一些会 **crash** 的代码。 |
512 | 551 |
|
513 | 552 | #### Activity 跳转约定
|
514 | 553 |
|
@@ -747,7 +786,7 @@ bottom_out_dialog.xml
|
747 | 786 |
|
748 | 787 | #### Style 样式命名规范
|
749 | 788 |
|
750 |
| -* 如果只是主题相关的样式,以 **Theme** 命名结尾,否则以 **Style** 命名结尾,命名要求尽量简洁,并且需要有代码注释,示例如下: |
| 789 | +* 如果只是主题相关的样式,以 **Theme** 命名结尾,控件样式则以 **Style** 命名结尾,命名要求尽量简洁,并且需要有代码注释,示例如下: |
751 | 790 |
|
752 | 791 | ```xml
|
753 | 792 | <!-- 应用主题样式 -->
|
|
0 commit comments