Skip to content

Commit e572507

Browse files
wanjianwanjian
authored andcommitted
2 parents 9911d3f + 62df213 commit e572507

File tree

1 file changed

+91
-5
lines changed

1 file changed

+91
-5
lines changed

README.md

Lines changed: 91 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
# Cockroach
1+
## Cockroach
22

33
> 打不死的小强,永不crash的Android
44
55

6-
# 使用方式
6+
### 使用方式
77

8-
自定义Application继承自android的Application,并在Application中初始化,越早初始化越好,可以在Aplication的onCreate中初始化
8+
自定义Application继承自android的Application,并在Application中装载,越早初始化越好,可以在Aplication的onCreate中初始化,当然也可以根据需要在任意地方(不一定要在主线程)装载,在任意地方卸载。可以多次装载和卸载。
99

10-
# 初始化方式
10+
例如:
1111

1212
```java
1313

@@ -56,8 +56,94 @@ public class App extends Application {
5656
```
5757
卸载 Cockroach
5858

59-
` Cockroach.uninstall();`
59+
```java
60+
61+
Cockroach.uninstall();
62+
63+
```
64+
65+
66+
### 测试
67+
装载Cockroach后点击view抛出异常和new Handler中抛出异常
68+
69+
```java
70+
71+
72+
findViewById(R.id.but1).setOnClickListener(new View.OnClickListener() {
73+
@Override
74+
public void onClick(View v) {
75+
throw new RuntimeException("click exception...");
76+
}
77+
});
78+
79+
findViewById(R.id.but2).setOnClickListener(new View.OnClickListener() {
80+
@Override
81+
public void onClick(View v) {
82+
new Handler().post(new Runnable() {
83+
@Override
84+
public void run() {
85+
throw new RuntimeException("handler exception...");
86+
}
87+
});
88+
}
89+
});
90+
91+
findViewById(R.id.but3).setOnClickListener(new View.OnClickListener() {
92+
@Override
93+
public void onClick(View v) {
94+
new Thread() {
95+
@Override
96+
public void run() {
97+
super.run();
98+
throw new RuntimeException("new thread exception...");
99+
}
100+
}.start();
101+
}
102+
});
103+
104+
105+
```
106+
107+
捕获到的堆栈如下,可以看到都已经被 `at com.wanjian.cockroach.Cockroach$1.run(Cockroach.java:47)` 拦截,APP没有任何影响,没有闪退,也没有重启进程
108+
109+
```java
110+
111+
02-15 11:25:16.940 29873-29873/wj.com.fuck W/System.err: java.lang.RuntimeException: click exception...
112+
02-15 11:25:16.940 29873-29873/wj.com.fuck W/System.err: at wj.com.fuck.MainActivity$3.onClick(MainActivity.java:53)
113+
02-15 11:25:16.940 29873-29873/wj.com.fuck W/System.err: at android.view.View.performClick(View.java:4909)
114+
02-15 11:25:16.940 29873-29873/wj.com.fuck W/System.err: at android.view.View$PerformClick.run(View.java:20390)
115+
02-15 11:25:16.940 29873-29873/wj.com.fuck W/System.err: at android.os.Handler.handleCallback(Handler.java:815)
116+
02-15 11:25:16.940 29873-29873/wj.com.fuck W/System.err: at android.os.Handler.dispatchMessage(Handler.java:104)
117+
02-15 11:25:16.940 29873-29873/wj.com.fuck W/System.err: at android.os.Looper.loop(Looper.java:194)
118+
02-15 11:25:16.940 29873-29873/wj.com.fuck W/System.err: at com.wanjian.cockroach.Cockroach$1.run(Cockroach.java:47)
119+
02-15 11:25:16.941 29873-29873/wj.com.fuck W/System.err: at android.os.Handler.handleCallback(Handler.java:815)
120+
02-15 11:25:16.941 29873-29873/wj.com.fuck W/System.err: at android.os.Handler.dispatchMessage(Handler.java:104)
121+
02-15 11:25:16.941 29873-29873/wj.com.fuck W/System.err: at android.os.Looper.loop(Looper.java:194)
122+
02-15 11:25:16.941 29873-29873/wj.com.fuck W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5826)
123+
02-15 11:25:16.941 29873-29873/wj.com.fuck W/System.err: at java.lang.reflect.Method.invoke(Native Method)
124+
02-15 11:25:16.941 29873-29873/wj.com.fuck W/System.err: at java.lang.reflect.Method.invoke(Method.java:372)
125+
02-15 11:25:16.941 29873-29873/wj.com.fuck W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1009)
126+
02-15 11:25:16.941 29873-29873/wj.com.fuck W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:804)
127+
02-15 11:25:22.340 29873-29873/wj.com.fuck W/System.err: java.lang.RuntimeException: handler exception...
128+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at wj.com.fuck.MainActivity$4$1.run(MainActivity.java:63)
129+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at android.os.Handler.handleCallback(Handler.java:815)
130+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at android.os.Handler.dispatchMessage(Handler.java:104)
131+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at android.os.Looper.loop(Looper.java:194)
132+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at com.wanjian.cockroach.Cockroach$1.run(Cockroach.java:47)
133+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at android.os.Handler.handleCallback(Handler.java:815)
134+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at android.os.Handler.dispatchMessage(Handler.java:104)
135+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at android.os.Looper.loop(Looper.java:194)
136+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5826)
137+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at java.lang.reflect.Method.invoke(Native Method)
138+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at java.lang.reflect.Method.invoke(Method.java:372)
139+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1009)
140+
02-15 11:25:22.341 29873-29873/wj.com.fuck W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:804)
141+
02-15 11:25:24.457 29873-29873/wj.com.fuck W/System.err: java.lang.RuntimeException: new thread exception...
142+
02-15 11:25:24.457 29873-29873/wj.com.fuck W/System.err: at wj.com.fuck.MainActivity$5$1.run(MainActivity.java:76)
143+
144+
```
60145

146+
### 注意
61147

62148
* 当主线程或子线程抛出异常时都会调用exceptionHandler.handlerException(Thread thread, Throwable throwable)
63149

0 commit comments

Comments
 (0)