android 在Kotlin中如何使函数处理多个方法同时发生一个异常

8ftvxx2r  于 2022-12-16  发布在  Android
关注(0)|答案(1)|浏览(160)

我正在做蓝牙低功耗Android应用程序,我不想看到这样的SecurityException:Security Exception shows
看起来处理问题(警告?)的最简单方法是添加

@SuppressLint("MissingPermission")

第二个选择是添加检查权限EACH语句(方法),这可能会在Android Studio中使用帮助上下文操作(又称快速修复)发生SecurityException
例如:

发件人

bluetoothGatt?.discoverServices()

if (ActivityCompat.checkSelfPermission(
         this,
         Manifest.permission.BLUETOOTH_CONNECT
      ) != PackageManager.PERMISSION_GRANTED
   ) {
      // TODO: Consider calling
      //    ActivityCompat#requestPermissions
      // here to request the missing permissions, and then overriding
      //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
      //                                          int[] grantResults)
      // to handle the case where the user grants the permission. See the documentation
      // for ActivityCompat#requestPermissions for more details.
      return
   }
   Log.i(TAG, "Attempting to start service discovery:"+
         bluetoothGatt?.discoverServices() )
}

但看起来不太对劲我觉得。
因此,我想创建一个通用的try-catch函数,用于处理不同方法沿着的相同SecurityException:

bluetoothGatt?.discoverServices()
bluetoothGatt?.disconnect()
bluetoothAdapter?.disable()
ScanResult.device.name
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)

这些方法来自不同的类,生成不同的返回值,但具有相同的SecurityException。
我认为,如果有适当的函数来处理SecurityException,那么代码重复将降到最低,代码将可以再生。
我怎样才能使函数处理沿着不同的方法导致相同的异常?如:

fun foo(m : differentMethods) : differentReturnValue{
    try{
        return m(bar)
    } catch(e: SecurityException){
        e.printStackTrace()
    }
}

我试着做一个函数,为处理异常的函数获取参数并返回值,但我不知道如何做。

o7jaxewo

o7jaxewo1#

您可以使用线程.setDefaultUncaughtExceptionHandler
访问此处了解更多详情:Using Global Exception Handling on android

相关问题