smali 语法之try catch语句
# virtual methods
.method public onClick(Landroid/view/View;)V
.locals 4
.parameter "v" .prologue
.line 62
:try_start_0
const-string v3, "try 1" invoke-static {v3}, Ljava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String;
:try_end_0
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_2 .line 64
:try_start_1
const-string v3, "try 2" invoke-static {v3}, Ljava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String;
:try_end_1
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 .line 66
:try_start_2
const-string v3, "try 3" invoke-static {v3}, Ljava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String; .line 67
const-string v3, "continue3" invoke-static {v3}, Ljava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String;
:try_end_2
.catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_0 .line 71
:goto_0
:try_start_3
const-string v3, "continue2" invoke-static {v3}, Ljava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String;
:try_end_3
.catch Ljava/lang/Exception; {:try_start_3 .. :try_end_3} :catch_1 .line 75
:goto_1
:try_start_4
const-string v3, "continue1" invoke-static {v3}, Ljava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String;
:try_end_4
.catch Ljava/lang/Exception; {:try_start_4 .. :try_end_4} :catch_2 .line 79
:goto_2
return-void .line 68
:catch_0
move-exception v2 .line 69
.local v2, e3:Ljava/lang/Exception;
:try_start_5
const-string v3, "e3" invoke-static {v3}, Ljava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String;
:try_end_5
.catch Ljava/lang/Exception; {:try_start_5 .. :try_end_5} :catch_1 goto :goto_0 .line 72
.end local v2 #e3:Ljava/lang/Exception;
:catch_1
move-exception v1 .line 73
.local v1, e2:Ljava/lang/Exception;
:try_start_6
const-string v3, "e2" invoke-static {v3}, Ljava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String;
:try_end_6
.catch Ljava/lang/Exception; {:try_start_6 .. :try_end_6} :catch_2 goto :goto_1 .line 76
.end local v1 #e2:Ljava/lang/Exception;
:catch_2
move-exception v0 .line 77
.local v0, e1:Ljava/lang/Exception;
const-string v3, "e1" invoke-static {v3}, Ljava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String; goto :goto_2
.end method
顺序分析:
try { //try0
System.clearProperty("try 1");
} catch //catch_2 try { //try1
System.clearProperty("try 1");
} catch //catch_1 try { //try2
System.clearProperty("try 3");
System.clearProperty("continue3");
} catch //catch_0 //:goto 0
try { //try3
System.clearProperty("continue2");
} catch //catch_1 //:goto 1
try { //try4
System.clearProperty("continue1");
} catch //catch_2 //:goto_2
return-void //唯一出口,void类型 //:catch_0
Exception e3 {
System.clearProperty("e3");
}
//goto :goto_0 //:catch_1
Exception e2 {
System.clearProperty("e2");
}
//goto :goto_1 //:catch_2
Exception e1 {
System.clearProperty("e1");
}
//goto :goto_2 变形:
try { //try1
System.clearProperty("try 1");
//:goto 1
try{
System.clearProperty("continue1"); //try4
}
} catch(Exception e1) //catch_2合并
{
System.clearProperty("e1");
}
//goto :goto_2 try { //try0
System.clearProperty("try 2");
//:goto 0
try{
System.clearProperty("continue2"); //try3
}
} catch(Exception e2) //catch_1合并
{
System.clearProperty("e2");
}
//goto :goto_1 try { //try2
System.clearProperty("try 3");
System.clearProperty("continue3");
} catch(Exception e3) { //catch_0
System.clearProperty("e3");
}
//goto :goto_0 //:goto_2
return-void //唯一出口,void类型 处理goto,合并try
try {
System.clearProperty("try 1");
try {
System.clearProperty("try 2");
try {
System.clearProperty("try 3");
System.clearProperty("continue3");
} catch (Exception e3) {
System.clearProperty("e3");
}
System.clearProperty("continue2");
} catch (Exception e) {
System.clearProperty("e2");
}
System.clearProperty("continue1");
} catch (Exception e) {
System.clearProperty("e1");
} goto小技巧:先处理小的,比如:goto0----goto1---goto2---......
smali 语法之try catch语句的更多相关文章
- Smali文件添加try/catch语句,出现“invalid use of move-exception”异常
插入代码如下: 捕获到以下异常: 2019-03-18 21:09:35.431 8272-8272/com.xxxx.xxxx E/AndroidRuntime: FATAL EXCEPTION: ...
- smali语法详解
smali文件格式 每个smali文件都由若干条语句组成,所有的语句都遵循着一套语法规则.在smali 文件的头3 行描述了当前类的一些信息,格式如下: .class < 访问权限> [ ...
- Atitit. Java script 多重多重catch语句的实现and Javascript js 异常机制
Atitit. Java script 多重多重catch语句的实现and Javascript js 异常机制 1. 语法错误(ERROR)和运行期错误(Exception) 1 2. 错误类型判断 ...
- android逆向分析之smali语法
一 .smali数据类型 1.Dalvik字节码 Davlik字节码中,寄存器都是32位的,能够支持任何类型,64位类型(Long/Double)用2个连续的寄存器表示: Dalvik字节码有两种类型 ...
- Smali语法编程
Smali背景: Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种.dex格式文件的汇编器,反汇编器.其语法是一种宽松式的Jasmin/dedexer语法,而 ...
- Java异常处理中finally中的return会覆盖catch语句中的return语句
Java异常处理中finally中的return会覆盖catch语句中的return语句和throw语句,所以Java不建议在finally中使用return语句 此外 finally中的throw语 ...
- SQL语法基础之DROP语句
SQL语法基础之DROP语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看DROP帮助信息 mysql> ? DROP Many help items for yo ...
- SQL语法基础之ALTER语句
SQL语法基础之ALTER语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看ALTER的帮助信息 mysql> ? ALTER Many help items fo ...
- SQL语法基础之INSEART语句
SQL语法基础之INSEART语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看帮助信息 1>.查看INSERT方法的帮助信息 mysql> ? INSERT ...
随机推荐
- CodeForces - 269C Flawed Flow
http://codeforces.com/problemset/problem/269/C 题目大意: 给定一个边没有定向的无法增广的残量网络且1是源点,n是汇点,给定每条边中的流. 让你把所有边 ...
- DateTime.TryParseExact 万能时间格式转化
本文转载:http://blog.csdn.net/gaofang2009/article/details/6073231 前天同事问C#有没有相关的方法能把"年月日时分秒"这样的 ...
- springMVC零配置吐槽
此时此刻,哥哥我不得不大大的吐槽一下.从github上down下来一个spring-mvc的chat演示样例,牛逼作者用的是注解的方式,项目全然零配置.而我眼下用的springMVC框架,还是在xml ...
- MFC程序实现给对话框加入�背景图片
1.插入一个Bitmap的资源图片,如果资源名称为:IDC_BITMAP1 2.在CXXXDialog::OnPaint()中实现: void CMyDialogDlg::OnPaint() { if ...
- Android保存设置的PreferenceActivity
界面XML文件:preference_setting.xml <?xml version="1.0" encoding="UTF-8"?> < ...
- NVMe 图解
http://www.ssdfans.com/?p=1143#rd&sukey=3997c0719f151520989740bb972a716fdb2dbab623808d16acd5075b ...
- 单表扫描,MySQL索引选择不正确 并 详细解析OPTIMIZER_TRACE格式
单表扫描,MySQL索引选择不正确 并 详细解析OPTIMIZER_TRACE格式 一 表结构如下: 万行 CREATE TABLE t_audit_operate_log ( Fid b ...
- Android开发之Activity(活动)
在安卓中,Activity(活动)就是一个包含应用程序的用户界面的窗口.一个应用程序可以包含一个或多个Activity. 一般一个活动对应一个UI文件,即xml文件.创建活动一般是基础Activity ...
- 网站优化的经验和技巧--精简高效的C#
对大型网站,技术涉及面非常广,对硬件,软件,编程语言,Web Service,防火墙等等有很高要求. 面对大量用户,高并发请求,可以使用高性能服务器,高性能编程语言,高性能数据库,加大带宽等,这 ...
- mysql-distinct去重、mysql-group …
一.MYSQL-distinct用法 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记 ...