com.esri.arcgis.display
Class PictureLineSymbol

java.lang.Object
  extended by com.esri.arcgis.display.PictureLineSymbol
All Implemented Interfaces:
IDisplayName, ILineSymbol, IMapLevel, IPictureLineSymbol, ISymbol, com.esri.arcgis.interop.RemoteObjRef, IClone, IPersist, IPersistStream, IPropertySupport, java.io.Externalizable, java.io.Serializable

public class PictureLineSymbol
extends java.lang.Object
implements com.esri.arcgis.interop.RemoteObjRef, IPictureLineSymbol, IMapLevel, ISymbol, IPropertySupport, IPersistStream, IPersist, IClone, IDisplayName, java.io.Externalizable

COM Class 'PictureLineSymbol'. Generated 3/19/2015 1:20:43 PM from 'C:\ArcGIS\COM\esriDisplay.olb'

Description 'A line symbol composed of either a BMP or an EMF picture.' Generator Options: PromptForTypeLibraries = False ClashPrefix = esri_ LowerCaseMemberNames = True IDispatchOnly = False RetryOnReject = False AwtForOcxs = True ArraysAsObjects = False DontRenameSameMethods = False ImplementConflictingInterfaces = True ReuseMethods = True RenameConflictingInterfaceMethods = True GenBeanInfo = True GenerateJavadoc =

See Also:
Serialized Form

Field Summary
static long serialVersionUID
           
 
Fields inherited from interface com.esri.arcgis.display.IPictureLineSymbol
IID, IID22c8c5a0_84fc_11d4_834d_0080c79f0371, xxDummy
 
Fields inherited from interface com.esri.arcgis.display.ILineSymbol
IIDe6bdaa7d_4d35_11d0_98be_00805f7ced21
 
Fields inherited from interface com.esri.arcgis.display.IMapLevel
IID, IIDcef72580_c1d9_11d2_9888_0080c7e04196, xxDummy
 
Fields inherited from interface com.esri.arcgis.display.ISymbol
IID, IIDf3435802_5779_11d0_98bf_00805f7ced21, xxDummy
 
Fields inherited from interface com.esri.arcgis.system.IPropertySupport
IID, IID8a11ad55_2f4f_11d3_9fa0_00c04f6bc6a5, xxDummy
 
Fields inherited from interface com.esri.arcgis.system.IPersistStream
IID, IID00000109_0000_0000_c000_000000000046, xxDummy
 
Fields inherited from interface com.esri.arcgis.system.IPersist
IID0000010c_0000_0000_c000_000000000046
 
Fields inherited from interface com.esri.arcgis.system.IClone
IID, IID9bff8aeb_e415_11d0_943c_080009eebecb, xxDummy
 
Fields inherited from interface com.esri.arcgis.display.IDisplayName
IID, IIDf47b9b56_7efe_4ee4_b7d4_445f93ff390e, xxDummy
 
Constructor Summary
PictureLineSymbol()
          Constructs a PictureLineSymbol using ArcGIS Engine.
PictureLineSymbol(java.lang.Object obj)
          Deprecated. As of ArcGIS 9.2, replaced by normal Java casts.
PictureLineSymbol thePictureLineSymbol = (PictureLineSymbol) obj;
 
Method Summary
 boolean applies(java.lang.Object pUnk)
          Indicates if the receiver can apply the given object at any given time.
 java.lang.Object apply(java.lang.Object newObject)
          Applies the given property to the receiver and returns the old object.
 void assign(IClone src)
          Assigns the properties of src to the receiver.
 boolean canApply(java.lang.Object pUnk)
          Indicates if the receiver can apply the given object at that particular moment.
 void createLineSymbolFromFile(int type, java.lang.String fileName)
          Create line symbol from picture file.
 void draw(IGeometry geometry)
          Draws the specified shape.
 boolean equals(java.lang.Object o)
          Compare this object with another
 IClone esri_clone()
          Clones the receiver and assigns the result to *clone.
 IColor getBackgroundColor()
          Line background color.
 IColor getBitmapTransparencyColor()
          Color within bitmap indicating transparency.
 void getClassID(GUID[] pClassID)
          getClassID
static java.lang.String getClsid()
          getClsid.
 IColor getColor()
          Line symbol color.
 java.lang.Object getCurrent(java.lang.Object pUnk)
          The object currently being used.
 com.esri.arcgis.interop.Dispatch getJintegraDispatch()
          Deprecated. Internal use only.
 int getMapLevel()
          Current map level for drawing multi-level symbols.
 java.lang.String getNameString()
          The display name of an object.
 double getOffset()
          Picture offset from center of line.
 Picture getPicture()
          Picture used for line.
 int getROP2()
          Raster operation code for pixel drawing.
 void getSizeMax(_ULARGE_INTEGER[] pcbSize)
          getSizeMax
 double getWidth()
          Line symbol width.
 double getXScale()
          Scale of picture along X-axis.
 double getYScale()
          Scale of picture along Y-axis.
 int hashCode()
          the hashcode for this object
 void isDirty()
          isDirty
 boolean isEqual(IClone other)
          Indicates if the receiver and other have the same properties.
 boolean isIdentical(IClone other)
          Indicates if the receiver and other are the same object.
 boolean isRotate()
          Indicates if the picture is rotated to follow the line.
 boolean isSwapForeGroundBackGroundColor()
          Indicates if the foreground and background colors are swapped on 1 Bit Images Only.
 void load(IStream pstm)
          load
 void queryBoundary(int hDC, ITransformation displayTransform, IGeometry geometry, IPolygon boundary)
          Fills an existing polygon with the boundary of the specified symbol.
 void readExternal(java.io.ObjectInput in)
           
 void release()
          Release a PictureLineSymbol.
 void resetDC()
          Restores DC to original state.
 void save(IStream pstm, int fClearDirty)
          save
 void setBackgroundColor(IColor color)
          Line background color.
 void setBitmapTransparencyColor(IColor color)
          Color within bitmap indicating transparency.
 void setColor(IColor color)
          Line symbol color.
 void setMapLevel(int mapLevel)
          Current map level for drawing multi-level symbols.
 void setOffset(double offset)
          Picture offset from center of line.
 void setPictureByRef(Picture pictureDisp)
          Picture used for line.
 void setROP2(int drawMode)
          Raster operation code for pixel drawing.
 void setRotate(boolean rotate)
          Indicates if the picture is rotated to follow the line.
 void setSwapForeGroundBackGroundColor(boolean swap)
          Indicates if the foreground and background colors are swapped on 1 Bit Images Only.
 void setupDC(int hDC, ITransformation transformation)
          Prepares the DC for drawing the symbol.
 void setWidth(double width)
          Line symbol width.
 void setXScale(double xScale)
          Scale of picture along X-axis.
 void setYScale(double yScale)
          Scale of picture along Y-axis.
 void writeExternal(java.io.ObjectOutput out)
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serialVersionUID

public static final long serialVersionUID
See Also:
Constant Field Values
Constructor Detail

PictureLineSymbol

public PictureLineSymbol()
                  throws java.io.IOException,
                         java.net.UnknownHostException
Constructs a PictureLineSymbol using ArcGIS Engine.

Throws:
java.io.IOException - if there are interop problems
java.net.UnknownHostException - if there are interop problems

PictureLineSymbol

public PictureLineSymbol(java.lang.Object obj)
                  throws java.io.IOException
Deprecated. As of ArcGIS 9.2, replaced by normal Java casts.
PictureLineSymbol thePictureLineSymbol = (PictureLineSymbol) obj;

Construct a PictureLineSymbol using a reference to such an object returned from ArcGIS Engine or Server. This is semantically equivalent to casting obj to PictureLineSymbol.

Parameters:
obj - an object returned from ArcGIS Engine or Server
Throws:
java.io.IOException - if there are interop problems
Method Detail

getClsid

public static java.lang.String getClsid()
getClsid.


equals

public boolean equals(java.lang.Object o)
Compare this object with another

Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
the hashcode for this object

Overrides:
hashCode in class java.lang.Object

getJintegraDispatch

public com.esri.arcgis.interop.Dispatch getJintegraDispatch()
Deprecated. Internal use only.

Specified by:
getJintegraDispatch in interface com.esri.arcgis.interop.RemoteObjRef

release

public void release()
Release a PictureLineSymbol.

Specified by:
release in interface com.esri.arcgis.interop.RemoteObjRef

getPicture

public Picture getPicture()
                   throws java.io.IOException,
                          AutomationException
Picture used for line.

Specified by:
getPicture in interface IPictureLineSymbol
Returns:
A reference to a com.esri.arcgis.support.ms.stdole.Picture (A com.esri.arcgis.support.ms.stdole.Picture COM typedef)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setPictureByRef

public void setPictureByRef(Picture pictureDisp)
                     throws java.io.IOException,
                            AutomationException
Picture used for line.

Specified by:
setPictureByRef in interface IPictureLineSymbol
Parameters:
pictureDisp - A reference to a com.esri.arcgis.support.ms.stdole.Picture (A com.esri.arcgis.support.ms.stdole.Picture COM typedef) (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getBackgroundColor

public IColor getBackgroundColor()
                          throws java.io.IOException,
                                 AutomationException
Line background color.

Specified by:
getBackgroundColor in interface IPictureLineSymbol
Returns:
A reference to a com.esri.arcgis.display.IColor
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setBackgroundColor

public void setBackgroundColor(IColor color)
                        throws java.io.IOException,
                               AutomationException
Line background color.

Specified by:
setBackgroundColor in interface IPictureLineSymbol
Parameters:
color - A reference to a com.esri.arcgis.display.IColor (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setBitmapTransparencyColor

public void setBitmapTransparencyColor(IColor color)
                                throws java.io.IOException,
                                       AutomationException
Color within bitmap indicating transparency.

Specified by:
setBitmapTransparencyColor in interface IPictureLineSymbol
Parameters:
color - A reference to a com.esri.arcgis.display.IColor (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getBitmapTransparencyColor

public IColor getBitmapTransparencyColor()
                                  throws java.io.IOException,
                                         AutomationException
Color within bitmap indicating transparency.

Specified by:
getBitmapTransparencyColor in interface IPictureLineSymbol
Returns:
A reference to a com.esri.arcgis.display.IColor
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isRotate

public boolean isRotate()
                 throws java.io.IOException,
                        AutomationException
Indicates if the picture is rotated to follow the line.

Specified by:
isRotate in interface IPictureLineSymbol
Returns:
The rotate
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setRotate

public void setRotate(boolean rotate)
               throws java.io.IOException,
                      AutomationException
Indicates if the picture is rotated to follow the line.

Specified by:
setRotate in interface IPictureLineSymbol
Parameters:
rotate - The rotate (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getXScale

public double getXScale()
                 throws java.io.IOException,
                        AutomationException
Scale of picture along X-axis.

Specified by:
getXScale in interface IPictureLineSymbol
Returns:
The xScale
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setXScale

public void setXScale(double xScale)
               throws java.io.IOException,
                      AutomationException
Scale of picture along X-axis.

Specified by:
setXScale in interface IPictureLineSymbol
Parameters:
xScale - The xScale (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getYScale

public double getYScale()
                 throws java.io.IOException,
                        AutomationException
Scale of picture along Y-axis.

Specified by:
getYScale in interface IPictureLineSymbol
Returns:
The yScale
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setYScale

public void setYScale(double yScale)
               throws java.io.IOException,
                      AutomationException
Scale of picture along Y-axis.

Specified by:
setYScale in interface IPictureLineSymbol
Parameters:
yScale - The yScale (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getOffset

public double getOffset()
                 throws java.io.IOException,
                        AutomationException
Picture offset from center of line.

Specified by:
getOffset in interface IPictureLineSymbol
Returns:
The offset
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setOffset

public void setOffset(double offset)
               throws java.io.IOException,
                      AutomationException
Picture offset from center of line.

Specified by:
setOffset in interface IPictureLineSymbol
Parameters:
offset - The offset (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isSwapForeGroundBackGroundColor

public boolean isSwapForeGroundBackGroundColor()
                                        throws java.io.IOException,
                                               AutomationException
Indicates if the foreground and background colors are swapped on 1 Bit Images Only.

Specified by:
isSwapForeGroundBackGroundColor in interface IPictureLineSymbol
Returns:
The swap
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setSwapForeGroundBackGroundColor

public void setSwapForeGroundBackGroundColor(boolean swap)
                                      throws java.io.IOException,
                                             AutomationException
Indicates if the foreground and background colors are swapped on 1 Bit Images Only.

Specified by:
setSwapForeGroundBackGroundColor in interface IPictureLineSymbol
Parameters:
swap - The swap (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

createLineSymbolFromFile

public void createLineSymbolFromFile(int type,
                                     java.lang.String fileName)
                              throws java.io.IOException,
                                     AutomationException
Create line symbol from picture file.

Specified by:
createLineSymbolFromFile in interface IPictureLineSymbol
Parameters:
type - A com.esri.arcgis.display.esriIPictureType constant (in)
fileName - The fileName (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getColor

public IColor getColor()
                throws java.io.IOException,
                       AutomationException
Line symbol color.

Specified by:
getColor in interface ILineSymbol
Returns:
A reference to a com.esri.arcgis.display.IColor
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setColor

public void setColor(IColor color)
              throws java.io.IOException,
                     AutomationException
Line symbol color.

Specified by:
setColor in interface ILineSymbol
Parameters:
color - A reference to a com.esri.arcgis.display.IColor (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getWidth

public double getWidth()
                throws java.io.IOException,
                       AutomationException
Line symbol width.

Specified by:
getWidth in interface ILineSymbol
Returns:
The width
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setWidth

public void setWidth(double width)
              throws java.io.IOException,
                     AutomationException
Line symbol width.

Specified by:
setWidth in interface ILineSymbol
Parameters:
width - The width (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getMapLevel

public int getMapLevel()
                throws java.io.IOException,
                       AutomationException
Current map level for drawing multi-level symbols.

Specified by:
getMapLevel in interface IMapLevel
Returns:
The mapLevel
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setMapLevel

public void setMapLevel(int mapLevel)
                 throws java.io.IOException,
                        AutomationException
Current map level for drawing multi-level symbols.

Specified by:
setMapLevel in interface IMapLevel
Parameters:
mapLevel - The mapLevel (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setupDC

public void setupDC(int hDC,
                    ITransformation transformation)
             throws java.io.IOException,
                    AutomationException
Prepares the DC for drawing the symbol.

Specified by:
setupDC in interface ISymbol
Parameters:
hDC - The hDC (A COM typedef) (in)
transformation - A reference to a com.esri.arcgis.geometry.ITransformation (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

resetDC

public void resetDC()
             throws java.io.IOException,
                    AutomationException
Restores DC to original state.

Specified by:
resetDC in interface ISymbol
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

draw

public void draw(IGeometry geometry)
          throws java.io.IOException,
                 AutomationException
Draws the specified shape.

Specified by:
draw in interface ISymbol
Parameters:
geometry - A reference to a com.esri.arcgis.geometry.IGeometry (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

queryBoundary

public void queryBoundary(int hDC,
                          ITransformation displayTransform,
                          IGeometry geometry,
                          IPolygon boundary)
                   throws java.io.IOException,
                          AutomationException
Fills an existing polygon with the boundary of the specified symbol.

Specified by:
queryBoundary in interface ISymbol
Parameters:
hDC - The hDC (A COM typedef) (in)
displayTransform - A reference to a com.esri.arcgis.geometry.ITransformation (in)
geometry - A reference to a com.esri.arcgis.geometry.IGeometry (in)
boundary - A reference to a com.esri.arcgis.geometry.IPolygon (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getROP2

public int getROP2()
            throws java.io.IOException,
                   AutomationException
Raster operation code for pixel drawing.

Specified by:
getROP2 in interface ISymbol
Returns:
A com.esri.arcgis.display.esriRasterOpCode constant
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

setROP2

public void setROP2(int drawMode)
             throws java.io.IOException,
                    AutomationException
Raster operation code for pixel drawing.

Specified by:
setROP2 in interface ISymbol
Parameters:
drawMode - A com.esri.arcgis.display.esriRasterOpCode constant (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

applies

public boolean applies(java.lang.Object pUnk)
                throws java.io.IOException,
                       AutomationException
Indicates if the receiver can apply the given object at any given time.

Specified by:
applies in interface IPropertySupport
Parameters:
pUnk - A reference to another Object (IUnknown) (in)
Returns:
The applies
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

canApply

public boolean canApply(java.lang.Object pUnk)
                 throws java.io.IOException,
                        AutomationException
Indicates if the receiver can apply the given object at that particular moment.

Specified by:
canApply in interface IPropertySupport
Parameters:
pUnk - A reference to another Object (IUnknown) (in)
Returns:
The canApply
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getCurrent

public java.lang.Object getCurrent(java.lang.Object pUnk)
                            throws java.io.IOException,
                                   AutomationException
The object currently being used.

Specified by:
getCurrent in interface IPropertySupport
Parameters:
pUnk - A reference to another Object (IUnknown) (in)
Returns:
A reference to another Object (IUnknown)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

apply

public java.lang.Object apply(java.lang.Object newObject)
                       throws java.io.IOException,
                              AutomationException
Applies the given property to the receiver and returns the old object.

Specified by:
apply in interface IPropertySupport
Parameters:
newObject - A reference to another Object (IUnknown) (in)
Returns:
A reference to another Object (IUnknown)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isDirty

public void isDirty()
             throws java.io.IOException,
                    AutomationException
isDirty

Specified by:
isDirty in interface IPersistStream
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

load

public void load(IStream pstm)
          throws java.io.IOException,
                 AutomationException
load

Specified by:
load in interface IPersistStream
Parameters:
pstm - A reference to a com.esri.arcgis.system.IStream (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

save

public void save(IStream pstm,
                 int fClearDirty)
          throws java.io.IOException,
                 AutomationException
save

Specified by:
save in interface IPersistStream
Parameters:
pstm - A reference to a com.esri.arcgis.system.IStream (in)
fClearDirty - The fClearDirty (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getSizeMax

public void getSizeMax(_ULARGE_INTEGER[] pcbSize)
                throws java.io.IOException,
                       AutomationException
getSizeMax

Specified by:
getSizeMax in interface IPersistStream
Parameters:
pcbSize - A Structure: com.esri.arcgis.system._ULARGE_INTEGER (out: use single element array)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getClassID

public void getClassID(GUID[] pClassID)
                throws java.io.IOException,
                       AutomationException
getClassID

Specified by:
getClassID in interface IPersist
Parameters:
pClassID - A Structure: com.esri.arcgis.support.ms.stdole.GUID (out: use single element array)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

esri_clone

public IClone esri_clone()
                  throws java.io.IOException,
                         AutomationException
Clones the receiver and assigns the result to *clone.

Specified by:
esri_clone in interface IClone
Returns:
A reference to a com.esri.arcgis.system.IClone
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

assign

public void assign(IClone src)
            throws java.io.IOException,
                   AutomationException
Assigns the properties of src to the receiver.

Specified by:
assign in interface IClone
Parameters:
src - A reference to a com.esri.arcgis.system.IClone (in)
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isEqual

public boolean isEqual(IClone other)
                throws java.io.IOException,
                       AutomationException
Indicates if the receiver and other have the same properties.

Specified by:
isEqual in interface IClone
Parameters:
other - A reference to a com.esri.arcgis.system.IClone (in)
Returns:
The equal
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

isIdentical

public boolean isIdentical(IClone other)
                    throws java.io.IOException,
                           AutomationException
Indicates if the receiver and other are the same object.

Specified by:
isIdentical in interface IClone
Parameters:
other - A reference to a com.esri.arcgis.system.IClone (in)
Returns:
The identical
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getNameString

public java.lang.String getNameString()
                               throws java.io.IOException,
                                      AutomationException
The display name of an object.

Specified by:
getNameString in interface IDisplayName
Returns:
The displayName
Throws:
java.io.IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

writeExternal

public void writeExternal(java.io.ObjectOutput out)
                   throws java.io.IOException
Specified by:
writeExternal in interface java.io.Externalizable
Throws:
java.io.IOException

readExternal

public void readExternal(java.io.ObjectInput in)
                  throws java.io.IOException,
                         java.lang.ClassNotFoundException
Specified by:
readExternal in interface java.io.Externalizable
Throws:
java.io.IOException
java.lang.ClassNotFoundException