The MStatus class does not exist in the Maya .NET API. Functions that return an MStatus in C++ have been converted to void functions or return a boolean in C# to indicate special cases to Maya; for example, if Maya is expected to do processing in place of the plug-in. In the .NET API, these functions return true in place of MStatus.kSuccess and false otherwise.
The following function returns false instead of MStatus.kFailure:
The following functions return false instead of MStatus.kUnknownParameter:
MPxNode::compute()MPxNode::legalConnection()MPxNode::legalDisconnection()MPxNode::connectionMade()MPxNode::connectionBroken()MPxNode::shouldSave()MPxFluidEmitterNode::fluidEmitter()MPxControlCommand::doEditFlags()MPxControlCommand::doQueryFlags()MPxManipContainer::doPress()MPxManipContainer::doDrag()MPxManipContainer::doRelease()MPxManipulatorNode::doPress()MPxManipulatorNode::doDrag()MPxManipulatorNode::doRelease()MPxManipulatorNode::doMove()MPxModelEditorCommand::doEditFlags()MPxModelEditorCommand::doQueryFlags()MPxConstraintCommand except for appendSyntax()The following functions return false instead of MStatus.kNotImplemented:
MPxHardwareShader::getAvailableImages()MPxHardwareShader::renderImage()MPxHardwareShader::renderSwatchImage()MPxHwShaderNode::getAvailableImages()MPxHwShaderNode::renderImage() 4 argsMPxHwShaderNode::renderImage() 5 argsMPxHwShaderNode::renderSwatchImage()The following function returns false instead of MStatus.kNotFound
MPxGlBuffer::open()This behavior also applies to the Maya functions that a plug-in calls. For instance, a function that in C++ returns kFailure in case of a failure instead throws an exception of type ApplicationException in C#. The following are the possible types of exceptions:
ApplicationException (instead of kFailure or kLicenseFailure)InsufficientMemoryException (instead of kInsufficientMemory)ArgumentException (instead of kInvalidParameter)ArgumentNullException (instead of kInvalidParameter when the parameter is null)ArgumentOutOfRangeException (instead of kInvalidParameter when the parameter is not in the expected range)When Maya calls a function of your plug-in (for example, the virtual method doIt() of a MPxCommand derived class), it always wraps the call with a try-catch clause. When it catches an exception thrown either by your function or by a Maya function that your function calls, a message box appears and displays the details of the exception, including the callstack, which may be very useful for debugging.
Thanks to this high-level try-catch, you do not have to wrap any call to a Maya function with a try-catch clause unless you want to react to an exception in a particular way.