0

I am trying to check a character pointer is null .How to check if the value is null i am basically from java

char* mypath = getenv("MYPATH");
if(!mypath) //this is not working
   throw "path not found";
if(mypath == NULL) //this is also not working
       throw "path not found";

i am getting an exception "terminate called after throwing an instance of 'char const*'"

4

2 に答える 2

9

問題はテストではありません。どちらifも正しいです (コンパイラに関する限り、読みやすさの理由から 2 番目の方が望ましい)。問題は、例外をどこにもキャッチしていないことです。char const[13]例外の型としてa に変換される a をスローしていますが、呼び出しコードのどこにchar const*も a がありません。catch ( char const* )

C++ では、 から派生したクラス型のみをスローするのが通常です (ただし、まったく必須ではありません) std::exception。このルールの唯一の例外は、intfor program shutdown をスローすることであり、それが作業しているコンテキストで文書化された規則である場合にのみです。main(値をキャッチintして返す場合にのみ正しく機能します。)

于 2012-09-27T17:21:57.730 に答える
6

例外をキャッチして処理するには、try/catch ブロックを使用する必要があります。

例えば:

#include <stdio.h>
int main(void)
{
  try {
    throw "test";
  }
  catch (const char *s) {
    printf("exception: %s\n", s);
  }
  return 0;
}

C 文字列を例外としてスローすることは、実際には適切ではないことに注意してください。C++ Exceptions - Is throwing c-string as an exception bad?を参照してください。@Jefffrey がコメントしたように、それに関する議論と代替案があります。

于 2012-09-27T17:21:16.013 に答える