You should take a look inside dart_api.h
file, it contains a lot of comments about Dart native stuff.
I have found Dart_ThrowException
function there, but also a comment saying that Dart_NewUnhandledExceptionError
should be used instead.
Both functions need a Dart exception object handle. It seems that Dart team uses their own Dart Util library to create them:
Dart_ThrowException(DartUtils::NewDartArgumentError("error message"))