# 应用在背单词过程中出现闪退

#### 问题现象

应用在使用背单词功能时，发生闪退。

#### 背景知识

*   JsCrash异常根据不同的异常场景，在Reason字段进行了分类，分为Error、TypeError、SyntaxError、ReferenceError、RangeError等错误类型。参考文档JS Crash（进程崩溃）检测。
*   JsCrash日志规格说明可以参考日志规格。
*   process.ProcessManager().exit()：exit接口用于终止当前进程，请谨慎使用此接口，此接口调用后应用会退出，如果入参非0会产生数据丢失或者异常情况。

#### 问题定位

1.  从faultlogger目录下未能获取到应用相关故障日志。
2.  在hilog日志中搜索关键字exit with code，退出码为1，应用很可能调用了process.ProcessManager().exit(1)接口主动退出了程序。
    
    ```
    07-21 13:16:57.700   655   655 W C02C11/appspawn/APPSPAWN: [appspawn_service.c:139]com.hx.example with pid 37605 exit with code:1
    ```
    
3.  向前排查退出原因，发现应用打印了Error自定义错误，异常信息是level config not found not matched to current user未找到与当前用户匹配的级别配置。
    
    ```
    07-21 13:16:57.524 37605 37605 E A03D00/com.hx.example/JSAPP: onRejection, name:  Error
    07-21 13:16:57.524 37605 37605 E A03D00/com.hx.example/JSAPP: onRejection, message:  level config not found not matched to current user
    07-21 13:16:57.524 37605 37605 E A03D00/com.hx.example/JSAPP: onRejection, stack:  Cannot get SourceMap info, dump raw stack:
    07-21 13:16:57.524 37605 37605 E A03D00/com.hx.example/JSAPP:     at loadLevelConfig (phone|phone|1.0.0|src/main/ets/l2/v3/w3.ts:143:1)
    ```
    
4.  排查堆栈中的相关代码，应用是否在打印异常后，主动调用了process.ProcessManager().exit()退出了进程。

#### 分析结论

应用捕获并打印异常后，主动调用了process.ProcessManager().exit()接口退出了程序，导致闪退现象。

#### 修改建议

尽量避免出现异常场景或者使用try-catch捕获并处理异常。

谨慎使用process.ProcessManager().exit()接口，如果入参非0会产生数据丢失或者异常情况。可以尝试使用terminateSelf或ApplicationContext.killAllProcesses代替。