Du kan använda det parametriserade meddelandet för att återge ett felmeddelande genom att mappa parametervärden för meddelanden till parametertaggar <parameter>.
Meddelandeparametrar
En karta över parametrar och värden som ger ytterligare information om felet.
Exempel: 'relationName' -> 'main.default.tab1'.
Meddelande
Det fullständigt renderade felmeddelandet, inklusive felklassen och SQLSTATE, med parametrarna ifyllda.
Till exempel:
[TABLE_OR_VIEW_NOT_FOUND] The table or view `does_not_exist` cannot be found. Verify the spelling and correctness of the schema and catalog.
If you did not qualify the name with a schema, verify the current_schema() output, or qualify the name with the correct schema and catalog.
To tolerate the error on drop use DROP VIEW IF EXISTS or DROP TABLE IF EXISTS. SQLSTATE: 42P01; line 1 pos 14;
'Project [*]
+- 'UnresolvedRelation [does_not_exist], [], false
Varning
Meddelandet och det parametriserade meddelandet är inte stabila i olika versioner.
Meddelandetexten kan ändras eller lokaliseras utan föregående meddelande.
Om du vill hantera ett feltillstånd programmatiskt använder du Felklass, SQLSTATEoch meddelandeparametrar i stället.
Hantera feltillstånd
Gäller för: Databricks SQL Databricks Runtime 14.2 och senare
from pyspark.errors import PySparkException
try:
spark.sql("SELECT * FROM does_not_exist").show()
except PySparkException as ex:
print("Error Class : " + ex.getErrorClass())
print("Message parameters: " + str(ex.getMessageParameters()))
print("SQLSTATE : " + ex.getSqlState())
print(ex)
Result
Error Class : TABLE_OR_VIEW_NOT_FOUND
Message parameters: {'relationName': '`does_not_exist`'}
SQLSTATE : 42P01
[TABLE_OR_VIEW_NOT_FOUND] The table or view `does_not_exist` cannot be found. Verify the spelling and correctness of the schema and catalog.
If you did not qualify the name with a schema, verify the current_schema() output, or qualify the name with the correct schema and catalog.
To tolerate the error on drop use DROP VIEW IF EXISTS or DROP TABLE IF EXISTS. SQLSTATE: 42P01; line 1 pos 14;
'Project [*]
+- 'UnresolvedRelation [does_not_exist], [], false
Fånga endast SQLSTATE 42P01 och visa ett anpassat meddelande:
Scala
import org.apache.spark.SparkThrowable
try {
spark.sql("SELECT * FROM does_not_exist").show()
}
catch {
case ex: SparkThrowable if (ex.getSqlState == "42P01") =>
println("I'm so sorry, but I cannot find: " + ex.getMessageParameters().get("relationName"))
}
Python
from pyspark.errors import PySparkException
try:
spark.sql("SELECT * FROM does_not_exist").show()
except PySparkException as ex:
if (ex.getSqlState() == "42P01"):
print("I'm so sorry, but I cannot find: " + ex.getMessageParameters()['relationName'])
else:
raise
Result
I'm so sorry, but I cannot find: `does_not_exist`
Fånga endast felklassen TABLE_OR_VIEW_NOT_FOUND och visa ett anpassat meddelande:
Scala
import org.apache.spark.SparkThrowable
try {
spark.sql("SELECT * FROM does_not_exist").show()
}
catch {
case ex: SparkThrowable if (ex.getErrorClass == "TABLE_OR_VIEW_NOT_FOUND") =>
println("I'm so sorry, but I cannot find: " + ex.getMessageParameters().get("relationName"))
}
Python
from pyspark.errors import PySparkException
try:
spark.sql("SELECT * FROM does_not_exist").show()
except PySparkException as ex:
if (ex.getErrorClass() == "TABLE_OR_VIEW_NOT_FOUND"):
print("I'm so sorry, but I cannot find: " + ex.getMessageParameters()['relationName'])
else:
raise
Result
I'm so sorry, but I cannot find: `does_not_exist`
Användarinsamlade undantag
Azure Databricks tillhandahåller följande funktioner för att skapa användardefinierade fel:
Genererar ett fel med ett valfritt felmeddelande om ett villkor inte uppfylls.
Båda funktionerna returnerar felklassen "USER_RAISED_EXCEPTION" och SQLSTATE'P0001' tillsammans med ett användardefinierat meddelande.
Exempel
> SELECT raise_error('This is a custom error message');
[USER_RAISED_EXCEPTION] This is a custom error message. SQLSTATE: P0001
> SELECT assert_true(1 = 2, 'One is not two!');
[USER_RAISED_EXCEPTION] One is not two! SQLSTATE: P0001
> SELECT assert_true(1 = 2);
[USER_RAISED_EXCEPTION] '(1 = 2)' is not true! SQLSTATE: P0001
Administrera en SQL Server-databasinfrastruktur för molndatabaser, lokala databaser och hybridrelationsdatabaser med hjälp av microsoft PaaS-relationsdatabaserbjudanden.