小要饭 2015-01-15 08:21 采纳率: 0%
浏览 1316

C++ Builder XE7 开发 Android 应用时关于异常捕获的问题.

代码如下:
//-----------------------------------------------------------------
void __fastcall xxxx()
{
try{
int x=0; int y=0;
y = x / y;
}
catch(...){ShowMessage("Error!");return;}
ShowMessage("ok!");
}
//-----------------------------------------------------------------
以上代码编译成win32应用后,是可以捕获到异常的.不会执行到 "ok"处.
但编译成Android应用后,catch部分似乎失效.总是执行到"ok"处.

请各位牛人 高人 大师指点啊!

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-05-27 00:06
    关注

    该回答引用ChatGPT-3.5,仅供参考,不保证完全正确

    在C++ Builder XE7中开发Android应用时,异常处理有一些特殊的考虑因素。Android使用的是Java虚拟机(JVM),而不是Windows下的C++运行时环境。因此,C++异常在Android应用中的处理方式略有不同。


    在你提供的代码中,异常处理部分使用了catch(...)来捕获所有类型的异常。然而,在Android应用中,可能需要对特定类型的异常进行捕获和处理,而不是使用通用的catch(...)


    在你的示例代码中,由于除以0的错误(即"y = x / y")引发了一个除以零的异常,但是这个异常可能并不会被catch(...)捕获到。


    为了在Android应用中正确地捕获异常并执行相应的处理代码,你可以尝试使用以下方法:

    1. 指定特定的异常类型:将catch(...)更改为捕获具体的异常类型,例如catch(const std::exception& ex)。这样可以确保捕获到特定类型的异常并进行处理。

      代码示例:

      void __fastcall xxxx()
      {
          try {
              int x = 0; int y = 0;
              y = x / y;
          }
          catch (const std::exception& ex) {
              ShowMessage("Error!");
              return;
          }
          ShowMessage("ok!");
      }
      
    2. 在Android应用中,你还可以使用Java异常处理机制来处理异常。通过使用try-catch块,可以在C++代码中抛出一个Java异常,然后在Java层面进行处理。

      代码示例:

      #include <jni.h>
      
      extern "C" {
          JNIEXPORT void JNICALL Java_com_example_MyActivity_xxxx(JNIEnv* env, jobject obj)
          {
              try {
                  int x = 0; int y = 0;
                  y = x / y;
              }
              catch (...) {
                  jclass exceptionClass = env->FindClass("java/lang/Exception");
                  env->ThrowNew(exceptionClass, "Error!");
                  return;
              }
              ShowMessage("ok!");
          }
      }
      

    请注意,以上示例代码仅为指导性示例,具体实现可能需要根据你的实际情况进行调整。此外,还建议查阅C++ Builder XE7的文档和Android开发相关文档,以获取更详细的信息和示例代码。

    评论

报告相同问题?

悬赏问题

  • ¥15 机器学习教材中的例题询问
  • ¥15 求.net core 几款免费的pdf编辑器
  • ¥20 SQL server表计算问题
  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题
  • ¥20 Oracle替换.dbf文件后无法连接,如何解决?(相关搜索:数据库|死循环)
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传